{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "龙曲良老师课程笔记/06_随机梯度下降.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "toc_visible": true,
      "authorship_tag": "ABX9TyMbpfyYzhf8uoG0G/t10wyK",
      "include_colab_link": true
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/jinxiqinghuan/learn_pytorch/blob/main/%E9%BE%99%E6%9B%B2%E8%89%AF%E8%80%81%E5%B8%88%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/06_%E9%9A%8F%E6%9C%BA%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EMwuo2yPt5cx"
      },
      "source": [
        "# 06. 随机梯度下降"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jSpk2bb4uSJs"
      },
      "source": [
        "import torch\r\n",
        "from torch.nn import functional as F\r\n",
        "from matplotlib import pyplot as plt\r\n",
        "import numpy as np"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LXDRKDFluI9V"
      },
      "source": [
        "## 激活函数与loss的梯度"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5CJ88cs6xKk8"
      },
      "source": [
        "### 激活函数\r\n",
        "* sigmoid\r\n",
        "* tanh\r\n",
        "* relu"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fb15cYIst_EK"
      },
      "source": [
        "a = torch.linspace(-5, 5, 100)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "y1-PN7XHueeP",
        "outputId": "c1957b36-f5c5-47b0-e132-2f7695279bfe"
      },
      "source": [
        "torch.sigmoid(a)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([0.0067, 0.0074, 0.0082, 0.0090, 0.0100, 0.0110, 0.0122, 0.0135, 0.0149,\n",
              "        0.0164, 0.0182, 0.0201, 0.0221, 0.0244, 0.0270, 0.0297, 0.0328, 0.0362,\n",
              "        0.0399, 0.0439, 0.0483, 0.0532, 0.0585, 0.0644, 0.0707, 0.0776, 0.0852,\n",
              "        0.0934, 0.1023, 0.1120, 0.1224, 0.1337, 0.1458, 0.1589, 0.1728, 0.1878,\n",
              "        0.2036, 0.2205, 0.2384, 0.2572, 0.2770, 0.2976, 0.3192, 0.3415, 0.3646,\n",
              "        0.3883, 0.4125, 0.4372, 0.4622, 0.4874, 0.5126, 0.5378, 0.5628, 0.5875,\n",
              "        0.6117, 0.6354, 0.6585, 0.6808, 0.7024, 0.7230, 0.7428, 0.7616, 0.7795,\n",
              "        0.7964, 0.8122, 0.8272, 0.8411, 0.8542, 0.8663, 0.8776, 0.8880, 0.8977,\n",
              "        0.9066, 0.9148, 0.9224, 0.9293, 0.9356, 0.9415, 0.9468, 0.9517, 0.9561,\n",
              "        0.9601, 0.9638, 0.9672, 0.9703, 0.9730, 0.9756, 0.9779, 0.9799, 0.9818,\n",
              "        0.9836, 0.9851, 0.9865, 0.9878, 0.9890, 0.9900, 0.9910, 0.9918, 0.9926,\n",
              "        0.9933])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 32
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "id": "bC2VRKsFv3pv",
        "outputId": "54dfb4f4-da23-41dd-e863-30d8366d89c2"
      },
      "source": [
        "plt.figure('sigmlid')\r\n",
        "plt.plot(a, torch.sigmoid(a))\r\n",
        "plt.suptitle('sigmoid', fontsize=20)\r\n",
        "plt.show"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<function matplotlib.pyplot.show>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 33
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "id": "FORkKxkNuzlU",
        "outputId": "df642b34-cfb4-4b77-d7d4-34325be03879"
      },
      "source": [
        "a = torch.linspace(-5, 5, 100)\r\n",
        "torch.tanh(a)\r\n",
        "plt.plot(a, torch.tanh(a))\r\n",
        "plt.suptitle('tanh', fontsize=20)\r\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0.5, 0.98, 'tanh')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 34
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 312
        },
        "id": "yI3mMoRrujIJ",
        "outputId": "5fe1dafd-b865-49e3-b2dd-67717b558153"
      },
      "source": [
        "F.relu(a)\r\n",
        "plt.plot(a, torch.relu(a))\r\n",
        "plt.suptitle('relu', fontsize=20)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0.5, 0.98, 'relu')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 35
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dHCDCnlJx8dh"
      },
      "source": [
        "### 损失函数\r\n",
        "* Mean Squared Error(MSE)\r\n",
        "* Cross Entropy Loss\r\n",
        "  * binary\r\n",
        "  * multi-class\r\n",
        "  * +softmax\r\n",
        "  * Leave it to Logistic Regression Part"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mQfd_S0xyDPi"
      },
      "source": [
        "### Gradient API\r\n",
        "* torch.autograd.grad(loss, [w1, w2, ...])\r\n",
        "* loss.backward()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "CdQCzjNQvbzO",
        "outputId": "ef383e67-e710-41b8-d4bc-439d2d28194a"
      },
      "source": [
        "x = torch.ones(1).float()\r\n",
        "x"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([1.])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 36
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "WVunhzZszIAC",
        "outputId": "ef999720-8d9e-4115-9165-301fefef895a"
      },
      "source": [
        "w = torch.full([1], 2).float()\r\n",
        "w"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([2.])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 37
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xT_H0VWRzRFf",
        "outputId": "982883c7-7dab-4798-f77e-71443b82298a"
      },
      "source": [
        "mse = F.mse_loss(torch.ones(1), x*w)\r\n",
        "mse"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor(1.)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 38
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Z7ZUS_ogzbb5"
      },
      "source": [
        "# torch.autograd.grad(mse, [w])\r\n",
        "# RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "l0Al6P6Bznic",
        "outputId": "d2adf5e9-acb9-460e-e28c-930a9e3f7262"
      },
      "source": [
        "w.requires_grad_() # 更新信息，w需要梯度信息"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([2.], requires_grad=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 40
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Q9rE1W8fzzZz"
      },
      "source": [
        "# torch.autograd.grad(mse, [w])\r\n",
        "# 前边图已经建好了，需要重建"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JtGw417b0ElP"
      },
      "source": [
        "mse = F.mse_loss(torch.ones(1), x*w)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "P2iPDv0M0Pix",
        "outputId": "65282ad0-87eb-426b-880d-63ad5a19caee"
      },
      "source": [
        "torch.autograd.grad(mse, [w])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor([2.]),)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 43
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "z7_LUW0MxRAe"
      },
      "source": [
        "loss.backward()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "t_XUkXOm0QUR"
      },
      "source": [
        "mse = F.mse_loss(torch.ones(1), x*w)\r\n",
        "mse.backward()"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "OFA9DDjixdUf",
        "outputId": "fb0060ac-6fea-4f88-d9d6-605406a6f394"
      },
      "source": [
        "w.grad"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([2.])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 45
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mm8IqcZ3ydUh"
      },
      "source": [
        "### 激活函数Softmax"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "AnJtiPQ3xhzq",
        "outputId": "323f18e6-dc00-4571-adb7-ca3f780f1b86"
      },
      "source": [
        "a = torch.rand(3)\r\n",
        "a"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([0.9276, 0.4183, 0.9416])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 46
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7bMXxrTa3AWZ",
        "outputId": "7b9af7db-6ee8-47c9-ad61-f4250baa0fac"
      },
      "source": [
        "a.requires_grad_()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([0.9276, 0.4183, 0.9416], requires_grad=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 47
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "33_kXShA3EYk",
        "outputId": "055ce84e-9598-47c6-b37a-c85fb4a170bd"
      },
      "source": [
        "p = F.softmax(a, dim=0)\r\n",
        "p"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([0.3824, 0.2298, 0.3878], grad_fn=<SoftmaxBackward>)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 48
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "K6YgfgaN3eZs"
      },
      "source": [
        "# p.backward() "
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mptCHGNAggF9",
        "outputId": "415d80d7-3d89-4ccc-95ad-6d3a68363b4e"
      },
      "source": [
        "p = F.softmax(a, dim=0)\r\n",
        "p"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([0.3824, 0.2298, 0.3878], grad_fn=<SoftmaxBackward>)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 53
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "uKhiyUKEgzBO",
        "outputId": "60bbc1e7-ff16-4588-ce48-55d1c8cb80bf"
      },
      "source": [
        "torch.autograd.grad(p[1], [a], retain_graph=True)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor([-0.0879,  0.1770, -0.0891]),)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 54
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "1G1mr2DshkzQ",
        "outputId": "f75d362f-837b-4ae9-fbd3-a47830d222c5"
      },
      "source": [
        "torch.autograd.grad(p[2], [a])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor([-0.1483, -0.0891,  0.2374]),)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 55
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tbuolxaCvTls"
      },
      "source": [
        "## 感知机的梯度推导"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tgoUpoMP4PXM"
      },
      "source": [
        "### 单层感知机"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7Gn0_WkthqP2",
        "outputId": "c9841466-dd02-4831-8d59-3b7b5bd9dc09"
      },
      "source": [
        "x = torch.randn(1, 10)\r\n",
        "x"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[-0.1465, -1.8298, -0.5152, -0.1576, -0.3295, -0.9647,  0.1012,  0.2668,\n",
              "         -0.9337,  1.3363]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 69
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RxLpzgF7wBAg",
        "outputId": "b144558e-9928-4888-fe9c-3991526a79ae"
      },
      "source": [
        "w = torch.randn(1, 10, requires_grad=True)\r\n",
        "w"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[ 1.3760,  1.2454, -1.0105, -0.1059, -2.0536,  0.4346, -0.3652, -0.8429,\n",
              "         -2.0686, -1.2068]], requires_grad=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 70
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sbkfheXZwdPh",
        "outputId": "8b3c154a-64a7-4434-cb31-0c01662b1adc"
      },
      "source": [
        "o = torch.sigmoid(x@w.t()) # o = x@wt   [1, 10][10, 1] -> [1, 1]\r\n",
        "o, o.shape"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor([[0.1640]], grad_fn=<SigmoidBackward>), torch.Size([1, 1]))"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 71
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fGII0Wz2wroX"
      },
      "source": [
        "loss = F.mse_loss(torch.ones(1, 1), o)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_26b3Z0WxC0I",
        "outputId": "907a1a62-3cc6-409a-c593-d1b4643e627c"
      },
      "source": [
        "loss"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor(0.6989, grad_fn=<MseLossBackward>)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 73
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "7GxMCQTbxDra",
        "outputId": "16eec203-29c5-412f-a659-8beced8204aa"
      },
      "source": [
        "loss.shape"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "torch.Size([])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 74
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "p_9pQFxuxFIa"
      },
      "source": [
        "loss.backward() # "
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bXhWQ3fLxI5N",
        "outputId": "8bd68943-2703-4278-993b-aea99baf7be7"
      },
      "source": [
        "w.grad"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[ 0.0336,  0.4195,  0.1181,  0.0361,  0.0755,  0.2211, -0.0232, -0.0612,\n",
              "          0.2140, -0.3063]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 76
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SMqSHcGjxK4J",
        "outputId": "6d5aa196-c976-4dea-fb69-d2f68aa5602d"
      },
      "source": [
        "#  w = w - lr*w.grad"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[ 1.3760,  1.2454, -1.0105, -0.1059, -2.0536,  0.4346, -0.3652, -0.8429,\n",
              "         -2.0686, -1.2068]], requires_grad=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 77
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VnZZwLRV4Tgz"
      },
      "source": [
        "### 多层感知机"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ifCyGFER39hx",
        "outputId": "7c4c82d7-302f-441d-91db-4ae240ac627b"
      },
      "source": [
        "x = torch.randn(1, 10)\r\n",
        "x"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[ 0.2475,  0.8349,  1.6537,  0.0686,  0.4028, -0.9601,  0.2788, -0.8227,\n",
              "         -1.7567, -1.2749]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 97
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "uXo5ewFD5rl8",
        "outputId": "3e9e2586-2363-443f-81b3-6914d9348a9b"
      },
      "source": [
        "w = torch.randn(2, 10, requires_grad=True)\r\n",
        "w"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[-0.4075,  1.0559, -0.1422,  2.8708, -1.3839, -2.1603, -0.3048,  0.0615,\n",
              "         -0.1561, -0.2613],\n",
              "        [ 0.1265, -0.5917, -0.7767, -0.3994,  0.6835,  0.5673,  0.6521,  0.4654,\n",
              "         -0.9249, -0.2015]], requires_grad=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 98
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-CZPwq-V5vcX",
        "outputId": "a50c3e35-659b-4368-df43-090a47642a0c"
      },
      "source": [
        "o = torch.sigmoid(x@w.t())\r\n",
        "o.shape"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "torch.Size([1, 2])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 99
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TSnFKhIK52pU",
        "outputId": "e5450c65-9e95-497a-82d9-41c317db55ec"
      },
      "source": [
        "loss = F.mse_loss(torch.ones(1, 2), o)\r\n",
        "loss"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor(0.1758, grad_fn=<MseLossBackward>)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 100
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "u3XlmyD76Cpt"
      },
      "source": [
        "loss.backward()"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aQvk_38K6OEt",
        "outputId": "5a97b0af-a438-4ed8-ea4b-ac88c92ecb2f"
      },
      "source": [
        "w.grad"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor([[-8.6937e-04, -2.9333e-03, -5.8097e-03, -2.4114e-04, -1.4153e-03,\n",
              "          3.3730e-03, -9.7933e-04,  2.8902e-03,  6.1717e-03,  4.4790e-03],\n",
              "        [-3.5312e-02, -1.1914e-01, -2.3598e-01, -9.7948e-03, -5.7485e-02,\n",
              "          1.3700e-01, -3.9778e-02,  1.1739e-01,  2.5068e-01,  1.8193e-01]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 102
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "E1NK_esv7Bkh"
      },
      "source": [
        "## 链式法则"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mo7yTLiW9XrS"
      },
      "source": [
        "from torch import autograd"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s6F191yF6oMZ"
      },
      "source": [
        "x = torch.tensor(1.)\r\n",
        "w1 = torch.tensor(2., requires_grad=True)\r\n",
        "b1 = torch.tensor(1.)\r\n",
        "w2 = torch.tensor(2., requires_grad=True)\r\n",
        "b2 = torch.tensor(1.)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qIPOVgTh8AP9"
      },
      "source": [
        "y1 = x*w1 + b1\r\n",
        "y2 = y1*w2 + b2"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "c3ObDYsx8eil",
        "outputId": "1de109c1-f69d-425e-b78e-f5d9b270f280"
      },
      "source": [
        "y1, y2"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor(3., grad_fn=<AddBackward0>), tensor(7., grad_fn=<AddBackward0>))"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 107
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "LiThv5kp8f2x"
      },
      "source": [
        "dy2_dy1 = autograd.grad(y2, [y1], retain_graph=True)[0]\r\n",
        "dy1_dw1 = autograd.grad(y1, [w1], retain_graph=True)[0]\r\n",
        "dy2_dw1 = autograd.grad(y2, [w1], retain_graph=True)[0]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ugJGYYan8kZo",
        "outputId": "48074eed-bd34-4c13-bec6-1c6ec9a01aee"
      },
      "source": [
        "dy2_dy1, dy1_dw1, dy2_dw1"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor(2.), tensor(1.), tensor(2.))"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 115
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "wQ70TysR9iai",
        "outputId": "de8f21a3-563f-40db-9f89-32a0091da406"
      },
      "source": [
        "dy2_dy1 * dy1_dw1"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "tensor(2.)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 116
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M-jkEK9290qE"
      },
      "source": [
        "## MLP反向传播"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fTublIV29roB"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "b_tZs0H-0nNv"
      },
      "source": [
        "## 2D函数优化实例"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FASFrxAd36lv"
      },
      "source": [
        "%matplotlib inline"
      ],
      "execution_count": 35,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 248
        },
        "id": "IZhlN9YB54Ig",
        "outputId": "1f53a07b-d8de-4b3e-ac31-739327c50774"
      },
      "source": [
        "import numpy as np\r\n",
        "import matplotlib.pyplot as plt\r\n",
        "\r\n",
        "def himmelblau(x):\r\n",
        "  return (x[0] ** 2 + x[1] - 11) ** 2 + (x[0] + x[1] ** 2 - 7) ** 2\r\n",
        "\r\n",
        "x = np.arange(-6, 6, 0.01)\r\n",
        "y = np.arange(-6, 6, 0.01)\r\n",
        "\r\n",
        "X, Y = np.meshgrid(x, y)\r\n",
        "Z = himmelblau([X, Y])\r\n",
        "\r\n",
        "fig = plt.figure('himmelblau')\r\n",
        "ax = fig.gca(projection='3d')\r\n",
        "ax.plot_surface(X, Y, Z)\r\n",
        "ax.view_init(60, -30)\r\n",
        "ax.set_xlabel('x')\r\n",
        "ax.set_ylabel('y')\r\n",
        "plt.show()"
      ],
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9Z4xsCXqe91TOVV3VFTrnHG6anZ2d2aUlShRkwDJswBAkC5bhX7Jg6YcMGbZgWBIlG5BF0gqgZJGCLNBcLSlSgTTJJZfc5ea5M/feualzzqlyTqfC8Y/T5/Sp6qrOMzv3Tr1/5k5X1anQ1e/5zve97/tpRFGkhRZaaKGFzwban/QLaKGFFlr4IqFFui200EILnyFapNtCCy208BmiRbottNBCC58hWqTbQgsttPAZQn/J7S1pQwsttNDC9aFpdsNlpNtCCy1cA6IoIsswtdrWhWQL59Ei3RZauCVEUaRarVKtVqlUKpTLZcrlMg6HA51O95N+eS18zqC5xBzRai+00EIDyERbqVSoVCrKzzUaDdVqlWKxiFarxWazode3apsvIJq2F1qk20ILV4DcNpCJtlqtKrdpNBo0mrO/MbnSlR9ntVoxGo2f+Wtu4SeKpqTbajq10EITyCRbKpUoFovMz88jCAKiKKLRaNBqtWi12hrCVUO+LZvNUiwWP+NX38LnFa3rnhZaUEGuaOW2gXwlqNFoiMViF5KsGvJ95PvncjlEUcRkMl3p8S28vWiRbgtfeFzUn61XIFyFMOtbdhqNBp1ORzqdJpvN4vF4WsT7BUaLdFv4QkJdzV7Un70OqtUqiUSCcDhMZ2cnZrO55ripVIp0Oo3FYsFisbSI9wuKFum28IWAum0gy7vgjGRvSoCVSoVIJEIoFCKZTNLW1obVamVubo6ZmRmsVmvNfQ0GA8VikWq1is1maxHvFxAt0m3hrcVF/dnbEK0gCIRCIUKhEIVCgfb2dnp7e5mZmUGj0SAIAk6nk4WFBSYnJ3E4HIBEunq9Hp1OR7lcJpPJYLPZWiaKLxhakrEW3irUGxXqifamyOVyPHnyBJvNhiiK+Hw+/H4/drv93H1lhUM+n2dhYYHR0VHcbjc7OztYrVb8fr/yOrVaLXa7vUW8bx9aNuAW3l7IBBaLxWpIsNEg7DrHTKVShEIhwuEwRqMRjUbD/fv3MZlMFz5OJnqr1cr9+/eZn5+nr6+PSqWiONTk4VqlUiGdTmO321vutS8IWqTbwhuHZkaFhYUF3n///VsNwmKxGKFQiFgshtPpxO/3Mzg4iEaj4dmzZxcSrgz185tMJh48eMD8/DyiKOL1emvuq9PpqFarSquh5V57+9H6DbfwRuCq/dnrEm65XCYcDhMKhchkMrjdbgKBABMTEzVVcqlUunLVLJsnZOj1eu7du8fHH39MMBjE6XTW3K7VahXibbnX3n60SLeFzy0u68/etKItFArKIKxUKuH1ehkcHMThcDQ9ZrVavdXlv06nw263IwgC6+vrjI6ONiTebDarmChaeDvRIt0WPle4jlHhOshkMgrRarVa/H4/U1NTNZKui1CpVC58/lKpRDgcJhgMUiwWmZ6ePkec1WqVyclJ9vf3WVpaYnJysuaYLffaFwMt0m3hJw51NXtXRgVRFEkkEoRCIaLRKBaLBb/fz6NHj250+S4rDdTI5/MKkVcqFXw+HyMjI+RyOV6/fn1Op1sul9Hr9QwPD7O/v69oedV9XHnAVigUEEURs9ncIt63DC3SbeEzx6elnxVFUSHBRCKBy+UiEAgwMjJya2VAtVpFo9GQTqeV59Dr9QQCAWZnZxX3mSiKGI1GJicnz+l0RVFUiLu3txeDwcDr16+ZnZ2tORHIVb1MvC332tuFFum28Jng0yJa9WV9NpslFovR3d3N9PT0nRCVKIrE43H29vaIRqNUq1X8fj9f+tKXMBgMTR/ncDiYmZmp0enWo6Ojo4Z4623DOp2u5V57C9Ei3RY+Naj7s+VymZWVFSYnJ2/dn83n8wSDQcLh8LnL+omJiVu/7kqlQjQaJRgMKtZeh8OB0WhkamrqwseqzUZqnW5/f3/D+7e3t6PX65mbm2N6ehqbzabcJhNvqVTi4OCA7u7uloniLUCLdFu4U1wUJJNMJm9EGqIoKpf14XAYg8GA3+9vWB3eFIIgKNKxfD5Pe3s7PT09irU3HA4Tj8ev/Hrl12IymRTiLZVKDe/vcrmYnp5mcXGR8fFxXC5XzXuqVqtsbW3hcrla7rW3AC3SbeFW+LSCZKrVKvF4XDEq2Gw2AoEA/f39F17WXwdyxRwKhahWq/h8PkZHRxteyt9GMmYwGJienubJkyfs7u7S19d37vg2m4179+4xPz/P4OBgjYmiXC5jNBqpVqst99pbgBbptnBtfFr92XK5rCR2pVIp3G43fr+f8fHxO6nuRFEkk8korQl5EHbv3r2airkRLpOMwZmjTa/XN5SiOZ1OstksGxsbjIyMnPuczGYzDx48YG5ujlKpRGdnJyD1reWgnJZ77c1H67fWwpXwaRkVisVijb7V6/XS19eHy+W6k8GRnHEbDAaVivkqg7BGx2lEuvXRji6Xi0QiwdTUlKJaAOmEYjAYmJycZHNzk+Xl5XOuN5Cq4gcPHrCwsECpVKKvr49SqaS81pZ77c1Hi3RbaIpPy6iQzWYV2RWA3+9nYmKiZoh0G9QT4V1UzGrSlfu/wWDwXLRjtVollUqxuLhYo1qQw240Gg0jIyPs7u6ysLDA9PT0uVaBTqdjdnaW5eVlNjY2sNlsNSeIlnvtzUYr2rEFBdfZeHvd4yaTSV68eIHZbMZkMhEIBPD5fHdGGIIg8PjxY5xOp0KEgUDgzirm9fV18vk8hUJBkY01inaUNwGXSiVFteDz+YjFYsRiMUZGRpT7Hh0dcXJywuzsbMOqWxRFNjY2SCaTdHV10dXVde72SqWCxWJpudc+f2itYG+hMWSiLRQKSsg2nCkBbjMIi0ajhEIh4vE4TqeTeDzOBx98cGeDsFwup1TMoiiSy+V49913G2bcXhf1/d9SqYTH42FkZOTC/q9MulqtViHezs5O9Ho9mUyGwcHBmvuHw2F2d3eZnZ1teAISRZFXr15RqVR4+PDhuapYPkmaTKaWe+3zhRbptnCGRv3Zg4MDRFFsOFm/KkqlEpFIRDEqeDwe/H4/brcbrVbLxx9/zLvvvnvjybssHQsGg0QiEUU65vf7MZvNPH78mA8++OBGx5aPL/d/o9Go0v/1+Xzs7Ozgcrnw+/0XHqNcLlOpVJTPsFKpsLCwgE6nw+Vy0dvbe+4x8Xic9fX1c7ZhGaurq+h0OlKpVMOqWK54TSZTy732+UErxPyLjsv6s0ajkWw2e+0/2PrELp/Px9DQUMPELrkXeR3SbSYdGxwcvJPpvWyEkK3DbW1tBAIBRkdHa15ns0FaPeqLGLk/+/z5c8rlMj09Pec+F7fb3dA2LEN+nMvlUtxr6qq45V57s9Ai3bcY19l4q9frKZfLVzqmnNgVDofR6XT4/X6mp6exWCwXPlaWPF0GeRAWDAY/FemY2jqcy+Vob2+/1Dp8G52uVqvF6/WSSqVYWVlhYmLi3PM4HA5mZ2eZn58/ZxuW1Qs+nw+9Xt8wTEcm3nK5TDabxWq1tkwUn1O0SPctwm2MCgaDoaljqv6y22q1EggErp3YpdVqa6psNeqXPd61dEyuyIPBIOVyGb/fz8jICHa7/UrHv0inq26rJJNJ+vv7zw29qtUq3d3dZDIZFhYWmJqaOkfiFoulxjbs8/mU48tV/UVVsXzVIi+9bLnXPp9oke4bjrsyKhgMhppKt1H+gN/vP3fZfR3I7QUZ9YMwn8/H2NjYnQ3CstmsMgiTK/KZmZlLK/JGqG8vFItFxc0mt1WGh4fR6/XMz89TLpfp6+tT7i/rdAcGBjg8PGRubo7Z2dlzLRJ5vY9skOjq6qpJJ4OzqnhhYYHh4WE8Ho9yW2v32ucfLdJ9A3GRUeGmlY1er6dYLHJ4eNg0f+C20Gg0pFIpjo+PlUHYVR1hV4GcCHZXGbpqVKtVisWiov/VaDT4/X4yWht/8v1J5X6CIDA7O8vKygqbm5sMDQ2h0WhqllJ2d3crbYL6WEeQfhf3799ncXFR2SxcD7kqnpubUyp3NeRWTjQaxeVytbS8nyO01AtvCGSiLZfLd6afhbNqU+6fDg8P4/f772wYox6EHR0d4XQ66enpUfqTd3F8uSI/Ojqis7OTQCBAe3v7rSs8eSNwMBhkb28Pl8tFZ2cnfr8fo9FIJl/kP/nrv8B3/vHfwOOUVrOXSiWFJNfW1hBFkfHxcebn5xkbG6s5ucRiMTY3N88F96jf28rKCtFolK997WsNfx/lcpn5+Xn8fj/d3d3nbl9aWqK7u1t5zS18ZmipF940qI0K5XKZnZ0d+vv77yTou5Hs6v79+7x48YKhoaFbv/b6DAVZOgaS+6y9vf1Wx28kTevq6iKZTDI7O3urY8sniWAwSDwex263EwgEcDqd3L9/v4a4/tFvfIdgPM2zlR3+7JengdqEsbGxMba3t1lcXKRcLp87CXg8nqaxjiC1Y4aHh0kkEk1tw/LSy6WlJQRBYGBgoOa7USqVFGVKy732+UCLdD9HuKg/e3x8fE5Yf1U0IhJ5tfhdhabIgzB1hkJ/f3/N5ttYLHYl9UIjXEWadtMTUb1aQj5JqElud3e3hvCWd0/4f775IQBPl3cV0lW/Bo1Gw9DQEPv7+2xtbTVsEzidzqaxjiCdwJxOJ3a7nfn5eWZmZhrahmdmZlhdXWVtbY2xsTHldQiCoFTRrd1rnw+0SPcnjOsEydSv9r4IzarNRtVS/eu56nPkcjllmASXZyjUD9Iug3oQJvdQr7NM8iI0yk+4SC2hHqSJosjf+qXfolyR3suTpW3lfo0+v97eXvb29pifn+fevXvnzA3qWMehoaGaKwF5ANfX11ezZaL+GBqNhvHxcaWynpqaQqvV1rye1u61zwdapPsTwE2CZGRJ10V9uWKxqFSDxWIRn893rtq8CPLUu1n1K/c4ZY2uyWTC7/fz4MGDK122Xka6ckZDKBQiEolgNpvx+/08fPjwTvqRjRZJXlUtoVYQ/Mrvf8huMKrcNr91yNFJiEwqQT6fZ3R09NxnaDAY6O/v59WrV9y7d+/c52U2mxW5WLlcJhAIANQkjHV2dtYQb/0x5Mr64OBAaVnUV96t3Ws/ebRI9zPCbTfemkwmBEE4Rz5qo4JGo8Hn8zE5OXmjalCWjakJQ92aiMViOByOGzvCGpGunEErO86cTieBQIChoaFbtz7URo5miySvi/1gjH/wq3/A+GAX4URGeZ4/+ugV/+n79zAajbx+/bphRev1epuaGwCMRmPNlomenp4a0r3KMQB6enowGAy8evXqXCui5V77yaNFup8S7jro22g0UiwWsdlsJJNJxahwl9WgXq9XhPg3aU1cBrmSllsfwWCQTCaD2+0mEAjc+vhQu3o9EokoRo7r5uc2Qrlc5q//wtfJForkMmnl5+9ODrKfrhIIBJQTo7oaVV/it7W1XWj5VcvFSqWSYtFWo62tjampqabHAAgEApTLZTY3N8nn8zXa5JZ77SeLlmTsDnER0ar/e11Uq1UWFxfJ5/MIgqAEr3i93jsTvheLRV6/fq1U5F6vV5na30UlVCwWWVtbI5FIoNfr8Xq9+P3+Ozm+LBubm5vDZDIpq9fvQjYm936Xl5f544VDfvV78wAMdfnYCsbxuuwUyiIDHR6+9XP/A4IgoNFoSCQSrK2tMTMzg9FoZG5ujkePHinHzeVyF24KFkWR1dVV0uk0AwMDijtNjXw+39A2LCMWi3F8fEw2m2VqaupcG0Vuc2m12pZ77e7RShn7tFCfP1tf0d4Ucj5AKBQim80qCVKTk5N39sdRHyau1WoJBAI1TqrboH7QJmfp3sXG3nK5XLN63ePxEA6H+drXvnbrz6dQKCivW+79/vjFIv/yO4vsnJz2cjUaXA47o70Bnq8fotFoeP7L/xNOi1F5/nQ6zfLyMsPDwxweHnLv3r2a5ykWi8zNzZ3biSZDFEWePXuG0Wjk3r17Dd9XsVhkfn6evr6+cwaJk5MTBEGgvb2dxcVFxsbGaGtrO3cMORWt5V67U7R0uneJ+iAZub+m1+tvvVpcJkHZZTQ8PIzdblf6nrc5vlrsH4lElDBxeRC2s7Nzqz+6ywZtcrviplAPCgVBwOv11sjG4vH4jT8fdXZuvWU4nSvwT3/nX9Pf3XlGuqLIl8b7+O7rLeW9/3Buk//8K2cr2h0OBzMzM0oFXg/Z8iv3cOWdaDI0Gg1WqxWLxdJULlZ/DLVBQm512Gw2xb3WiOBbu9c+W7Q+3SvgsiAZrVZLsVi8ds+w0aCnWT6AyWSiWCxe+7WrB1XxeByHw4Hf7284qJJ7utc9fiMzQaNB20WBN83QSJZ200GhGo2UEs1CfP7Hf/JrnMQz9HWdDQFtFhPlau2F4I/nt/hz703WXOFYrVaGh4cVZ1m9McRgMHD//n0WFhYol8vn8nZLpRLj4+NEIpGmcjHZICH3gWUTTbFYVFoKlxF8a/faZ4cW6TbBdQZhVquVXC53JenRTRclms3mK5OuelCVTqfxeDxXGlQZDAYKhcKVji9bb68zaLuKTlftmLuJLO0i1CsxrqKU+Gf/7tv8/uPXABwEY8rPZ4a62TmO1tx3be+E45MTuusSxuTKeWdnp0YOpr59dnaWpaUlSqUSg4ODyvdLVpNcJhdTGyTkbcOCINTcT03wgiDQ399fcwz17jWgRbyfElqkq8JNN95aLBZyuVzT497FokR58t8MjTS6AwMD1xpUXRTveBfRi81Itz6o/KJq+bpo5Da7qlLiWx+95ttPF5X/P4rE6fS143M7ebKyB0C7y0EsU2Cip535vSg/fLnK1yqVmoq1XC4rcjC5oq3PSdBqtUxPT7O2tlbjKlMrHy6Ti2m1WiYmJtjc3GRpaYlisXiOOGWCX1lZYWNjg+Hh4Zrfn1arRaPRkM1mlTVALUnZ3eILT7p3sfHWYrEol78y6klKvTH2Jl/iRo9ptFX3Npfe9UHmdx29qA4xr4+OvMug8uu6zRrh1douf+3nfoXZ0dpqsNfnYuP4rOLtC7gRKjGiWem7s5WsMJtMUi6XlRwE2XDSrA0gQ6PR1OQ1TE1NUY/LJGfytuG9vT0ikUjD96vVai9cBS9/958/f86jR49a7rU7xheOdD+NjbdWq5V8Pn+u/3iX+bDy64vFYkQikRrH1l1ceoNEurlcjo2NDcLhsBKGc1fRi5VKhUwmw8uXL5XoyNuciNQoFAoIgsCzZ8+u7Tarx/ZRiL/8d/8FuYLAUShWc5tWIxLPnrV5NBoN04NdPF09AOA7Lzb4X//rP83q6irr6+uMjo7WhN3IFa26DdAsr2Fubq7h5yIP6C6SnPX19SnHaGYbvmgVvKynbrnX7h5fCNK9a6OC+rhqNcDy8vKdkiCcDcJkadTOzg7d3d134tiCswxa2WwhCAJ9fX309/ffydZetfyqVCpRqVQYHR29EydUveIAuJXbDOAwFOPv/vK/J5KQzA/7wShul51EpsBXZkbYrOvjCqUyi/tnPzsIJ1k9iDA+Pq5UkvKKdBnqNsDKykrD6l5uT2xvb59zpYF0om+0ZUJGtVrFaDTS19fX1HoM0N/fz/Hx8bkhXbFYxGw2t9xrnwLeWtKVq9lcLldDTrcl2ka2Vb/fj9Vq5dGjR3fypZQ1qKFQiEwmg8fjoaOjA4Curq6Glc110GgrRCAQYGxsjCdPnpybbF8HF21s0Gq1zM/P37jylxUHajeeWnHw+PHjGxNuLpdjfmWdv/pzX8dqru2DDnT6SGWyPFvdpVIVGezuYOckitloIJktMtbjZ3HnBIBHoz188+kKE70/pVSSR0dHjIyM1BxTXWnKrYR6OZjb7SYcDjclTZPJVJPXoP69yTkdV7ENy0M69fMUCgWln9tyr90t3irSbdSflYM/brKiRUY9CTayre7v75+bFl8H9dGFXq+XwcHBmujCRCJxI9kYnPU5P42tEPVk2GxjQ30A+1XQLJthZGTk1ppitUoikS3yt3/lWxzHUlhMRvQ6rZIiZtBqiGQKVE4lYh0eBzsnUR6M9vFkZY+egCQDa7OZ2TiJEUrl+Jv/1U8BUiUZjUbZ2dnB7Xafuzrp7+9vur6nXC5jt9vx+XxNSVOtSCiVSoqxRZ3TobYNT0xM4HQ6z30eanKenp5WKl1o7V67a7zxpHvZxluHw0Emk7k26V6FBNWQ+7rXIV21Rler1V4aXShXIFdFo1Stu7q0V7c94vH4lcjwqjrdRpK0u8hmqF+wKa9zz4sG/vFv/wcOw3EA8kWByaE+VnaPsZlNFMtlUjlBOU46m2d2qFtRMGwfhQHoarezfJQgmSvyYuOIRyOSdMxkMmG325uu52m2vkduK1y2ol1WJCwvLysrguqVC3a7Xdk2PDIyUrNXTYZMzouLi0rmsozW7rW7wxtJuqIoKlXTZRtv7XY7mUymoXe9/phqNcBVSFANWTbWyGapfo5GYTVX3eFlMpkulKbdVapWs0zd+qAaue1xVWuyLIFqhHrFQaMQ9JtAvc4nkUjUtFK0Wi3ffTrPf/9//BKlShmDXkepLJ0U3A4rep2W0f4OXm8c0OH1cBKX+rzBWBKz9SwzOBhP86WxXl7sRpSf/e6TZYV0K5UKgUCghnjrfx+BQKCGeM1mc00vVz08a2Tn1Wq1TE1Nsb6+zsrKCk6n81wBYLFYlKWXjfaqwRk5P3v27FygOrTca3eBN/ITkyerV+nP2u129vf3G96mTqS67SJDq9WqiMrVkP/oZUeYXBHKm2Ovg0autGbr0W+aqiXLxtQDFZkMb6r/lVF///pK3O/334nao1EuQ1dX17l82X/1H7/N3/2l36ByeuKeHO5nefsQgFQmx6OJQZ6t7AAQaLNzEk+j1WhwWo0YDGcnGYvJgN1hB85Id27rhIJQxmzUK+oFOYBnbm6uYaugvb1dWd8zMzNDqVSqIU55eNbMzqvRaBgdHWV3d5eDg4Nz5geQDA/NbMPK+7FYsFqtHB8fKyduNVrutdvhjSRdrVZ75ctMm81GJpNR/l8eIoVCIaXy8fv9t+4RWiwWwmHpMrPRDq/rVITNIJNupVJRLu3V7+E269FlGAwGUqmUkqEAl2+EuA4qlQqbm5s1Q7bbKg5AqpQFQeD58+fKyaF+nY+MRDrL3/i5f8Uf/PgFfq+bcFzKg2hznJGg027h9dah8v/p0yjHByPdvNwK8qXJQThOAHB/uIfVvSAaDYgiPBzu4tVOmN/83nP+2z/7Xk0w/GWxjC6XS7ndbrefOwGpV7SXy2VlwCpDo9EwMDBALBZjf39f6dWqod6r1kgvDFKx8OjRo5psXzVa7rWb440k3etUWHLlJq8Wz+VytLe3093dfa7yuQ10Oh3xeJxPPvmk6Q6v20Am8kQiwccff3yn70E9VIrFYhSLRbq7u+9E+lbfUpEHNHexFj2fzytyNFkWeNnJ4YfPF/jb//zXWDmtaAc6fQrpJtMSgbw7NcxH8xuM9PjZPJH6vAeRNO9ODPLJuvS49b1jDDot430dPFnbBzRM9HdwEkuzG5aO9xs/WuTP3JMGW+rfkd1uv7BVIF/if/LJJw0v8Q0GQ021Wp/XABIJulyupn1knU6n6IVlPbH8GuUWkJztKy+9VNuToeVeuyneWNK9qD8IZ3+Q4XCYQqFAJpNhZGQEu91+Z1+M+kFYpVK5sx1ecDbMCwaDlMtlfD4fJpOJDz744E6IVp1DIA+V1CvMb4qLFAdPnjxpeEl71dfcqGctmzceP37clHBTmRx//5f/LV//3e/xaOpMvqX+HNd3j5ju7+CT05aC192mkG6Hx0FZ9XVLZgu8Nz3MdiiFnOLnMBux9/h4sRkEYCOU4cniJj5L48Gr3Cqo34sG0pWTw+Hg8PAQk8nUMBlMXa3WE6IgCHR2dmKz2Zr2kWW98NbWFktLS8qVmFr50MyerP78dDod+Xy+tXvtingjSRfOD2Xkak2OFZTdVLOzs+zu7uLxeBom7F8H9T3gep3oRx99dOvL5EaKBnXqWDgcvtbySDWa6XPV4vxcLnftpDFovAjzrhQH9XK06/SsRVHkN771Q/7jdz7i+58sAGBUXW5v7h2e/kzHxGA3Wv1ZRXgYkkwP7U4bOaFKp77WKuuwWoikjpWfCaUyG6GzjRKPRrv40V6e/2LExPb2tmILllHfKqjvnVarVUWV0KiVcBEhVioVdDrdpWveNRoNw8PDyuLMmZmZGrmYfJ+xsTF2dnYU91q9bVi99LLlXrsYbyzpyrpBdVCKXK3Vu6muqmBohPrpt7yVoFEP2Gw2UygUrlXpXlXjKsNoNNas1b4Mchh6MBhUWisX6XPr8xcuQqMQnKsoDi47adyVNvdHLxb5e//3N5hb2+a92bPg9N3DM6KMJDJMj/ZTqcLcxgHv3x9XbtsPRpkY7iObL3IQSVHdO0Gr1VCtinxlepBnK7uK4sFq0rMXTjDR4+flVhC33cLaUYLXOxF+ZkAisvrLeDjT2coGB/VVQKVSURZWyjrc+laCOq9BXa3Kt8Hla94BZdvwq1ev6OzsbLj0cnBwkIODA6VyrjcdtdxrV8MbS7rpdJrnz58rRoWLglLsdjt7e3tXPnb91gZ5+i2vtW4GOeLxMtKtVzTI63euQiryMO0i0q1vS8jHvkprxWAwXGjAkBUHwWCQarV6bcVBfXKWDHUaWDqdvtXetO9+/Ip//Ku/Rb5YZG59F4CNvQPl9qNIAn+7h3A8ycRgDx6ngx+/XgNg//hMgWCzmOjwtPGD1+sAxFJZpof70Gi1PF3ZpyrCSJeHzVCasR4/r3fChGPScG2gw8PLbWkQ+QdLIf7pT3+1acBMfRDOwMAAcHZyUkc/qoN01J+pnNcwPz/P5OTkuc/3ojXvMmRn2urqasM+MUhLL41Go+JeUxcG8msVBIF4PE53d3fLRNEAbyzpOp1OvvrVr17pbGqz2RrKudRo1D+VtzZc9Yx9UcRjM2vvdRUNzcLML2tLXBV6vb7ms1Lbehv1Ua8LWecp9w7r08Buqs0tFDFQu58AACAASURBVAW+82yRn//1P+LDl8sAGA06xVkWTWbo6QhwEJRIdajHz0hfJ8+WNmrex0EoSl9XgFgqQ2+nj1CidtOFgTKbwSxyfrnDZuedMZfSx92PZrnX164QLsB2NE8omWNkZISdnR0WFxfPXaLLebjqyEU11EE5jSpmkPIa5FZCo9ZLszXvani9Xk5OTjg8PKS9vb1hj9zv96PX63n16hWzs7Pnll4WCgUODg5wuVwt91oDvLGkK8vGLtnxBkhEIgfdqCe0zTICbmoZtlgsxGJnqVRyxm0wGLySq+0qkEn3OpsPrgODwYAgCDXa3+v2US+CKIrs7e0RjUZvnQYGsLixw6/97nf59kcv2D6UiK+jvY1gLIVQqjAzNsjChlTt9gTaOQhG6PJ5sFvM/PEnUlbu6s4BJoOeYklqqwx0erFYTKzsSu0Eh8VKuiBgt5gQRC154cxVF02mEVV9YLvFiM3hhBPp5DvT52XxMMm/+NZLfvYvfo2BgQEODg4ULa76El2OXFxfX2d5efkcWWk0GsbHx88NvtTo7OxEEAT29vYoFovn2gSN1rw3wujoKIuLi01twx6Ph4mJCebn588tvZRbbNVqteVea4A3lnThYodTPcxmM/l8XiFCeT33Tc0QjWC1Wtnd3WV7e5tQKIRGo7mWq+0yVKtVisUikUiE3d3dK20+uM6xY7EYBwcHRCIRxUV1W/0yUFMpZ7NZ2tvbb3Vy2zsO8dvf+ZCnc8v84YcvAJgaOiOPwd4ugjGpQnXazj53oVTig/sTvFrd5vnShtKfzRcF7o8PMbe+R8DjIpfLsbYvVarVqkif38XGcZz+Th9Le0FmR/pZ2D7GaNBhNJnwuZ0cRqUB2nivn+cbJ3jsZrIFgZNkHoDf/HCF/+5PzTLgd9HT06O4z+7du1dzIpMNDpubm8RiMeWqQH27PPhqFMkI0vewvb29aV5D/Zr3+nZFoVDA7XYzOzvLwsICw8PDDW3DTqezofRNXvnecq81xhv9KVylWpQn9oVCgadPn9Le3n5nZALn4x1zuRwdHR08fPjwToi8XhVgs9kwGo08fPjw1pdt6mOr+6jlcvnc5trroP4zUdudl5aW6OzsvDbhLm3s8gc/esrC2ha/9/2nAMyOnG0tVldaReFMfSH3WGfHBsjlCyxs7FEqV8gXBSaG+1nZkdQLmmqFXn8b6bzAy4192pxOEmmpWi0IAuMDncxvS0li5lM32oORXp6tHyJUKmg0cG+wkxdbElmPdLqpihqeb0uGmX6/i3/428/4F3/lZwDo6Oiosf2qK1KNRkNHRwfxeFwJwqn/rvb19dUQt5rQBEHA5XLR29vLwsJCw/XrWq1WWe9T366oVqvodDosFosia2tmG24UMZnP55VhXcu9dh5vJek2mtj7fD70ej1DQ0O3ft5Gu7bkZY9Pnjxpesl2VciqANl6q1YFFAqFhpee1z12M8VBpVJhd3f32set1/3KK3fqq3D19oiLkM0X+PDFAt/+8BM+mV9hYUMahPrcZ5e6keSZ03D74EyRsLq9r6gKtFoNX54d5+m8NCibHRtS2g1mvUq+ZdQRSuURTlsMY70dPF3aQqfVYtDrOYic9XYXtg756uwwj5el17QfSvDe1CArR4mz158rcpSSeu8aDZQrVb67sM/3F/f5k9PSkMrr9dbYgtUnolKpRFtbGw6HQxla1bd2urq6aiIZZUITBAG73X5pXkOjdoX8cxlXsQ2rIyZLpZJS6cpouddq8UaTrpp41GHZjSb2yWTyWgqGejSrChtNohuFTl8G9WocWRXQyF11k63AaueWfOzx8fGGQ5KrLI+UcZOVO82SxkRRZHFjh49fLfPN73/M07llfB4nh6ebG/o6/ewdhwnHU/R2+tk/DnMcjtHfFWD3OEQ4lqTL5+YokiCbL/DT7z0glswwt7bNl++dycV0nD13LJXFajYyMzLA08UNRgd72diXqtlCoYBep+XB+ADPV/d5b3qYp6vS92e016/EPgLotBoKuSzpvJREZjHqSeRLjHZ5eLZxwmyPm/kjqf3w/35/iXdHOrCZpO+H2+1mfHyc+fn5Gh2t/B26qCIGaTuJTqdTWgkWi6XG3HCVvAa1Tnd4ePjcc6htw4IgnGtHwJn0bXFxkUwm03ATdMu9JuGNJl2Ara0tgsHghevLQbr8vEzBUI+LKs5mXxg54vEy0pXdVfIg76qrca4yPLzMuXURLvtDqJfTXTeXV03qoWiCHzx9xfLWHv/2m98lHEsyO9LH/GlV29PhV0i3p8PH3rF0qd4T8LJ/+u+uQDu7x9IlvdfloK+7g3AsRVEoM7e2DUAmfWZYCMXP/m23mHE5nTxb3ADA57KzcZqNtHlwwqPxQZ6dEm0sJVXVI90+Ng5jeJ1nEZsPR7p5sR2iq72No3iWyV4fL3cixDIFBn121kLS986g07B5kuDnf+cFP/vn31Mer9bRyoMr9Ylbrohl4q3/fssGCJm41aQLl+c1wJlOd2lpqeHgTK2uaKae0Ol0TE1N8fjxYzY3NxuuImq5195w0tVoNErv6jKSk7NALxPmyxVnMChNwq8b9iJrdRt9ceVLcNnRdtX1641Q/z5u69y6CPUqjJvI6UCqjBc29vjGH/yY7cMQ3378HFEU6Q20E44lpecqn1WQmdwZsWWyeeXfucJZpZ/NFZge6cdutRCLx5nblPS4ufzZ/XdPIkq74SgcY3K4nzannScLa7x//2z54/6JROQepw2fx41W1Udd3w8y2d/BYSJHXiizH0kx0tuBy27h+Wkft8Ntw2238HIncvpeKvicZnZi0vt4MBjgk60I//bDNX5mtoevTZxdqttsNmVwNTIyQqlUqiFXt9vdVC0AtcQtiuK5S3h12Hm5XG7YAuvs7FRO1o2UDxqNpqFtWA1BEGhra0Oj0TS8T8u9BppLqqarSQN+giiXy1cKxgZ4/vw5U1NTNV9mddhLJBLBaDTi9/vx+/03Cns5OjqiWCwyODgINE81k2P+boJnz55x//599Hp9TZC47Ja7zbEBPvroI2ZnZ5WKFqSTTyAQuLYKI5PN872nr/j9Hzzhux+/RKxWiKekys/tsBJP59BoNHjanETjSbRaLS67lXgqg16nw2o1kcrkMBr0GPQGsvkCZpOR0f5uHDYre0dh4ukM2XwBrUaD1WImk5dIubfTr+hy741Lvdx3p0cxmc386FTLOznYw8ruifJ63384xe5JnONoguFuH1tB6WQQcDsY6+/hw+WzFtVP3Rvhk+0QxZL0/etud2C22tk+fczDQT+v9mIMBlxURA3HiQLlqkjAaaJUhf/wN/8zOt21J3NBEJibm8NoNNLT03NONZDNZi90luXzeZ48ecK9e/caKg6q1SpLS0vYbLaGbYLd3V3FqNJsvQ9Im1JisRgzMzM137VoNEo8Hlc2Esfj8XP3gbPlAwaD4W11rzV9Q7qf/dmfveiBF974eYC8oucqSKfTylQ2Fouxu7vL2toauVwOj8fD6OgoPT09uFyuG8tb5N6vHGG4vb2NRqOhs7OTsbExAoEANpvtxoOwcrnM0dERkUiEnZ0dRFFUQrk7OjpufGy5JbG/v084HCadTuN0OhkeHqa/vx+3233lijmRyvD7P3zC3/+/v87//PP/kt3DY/74o5fkiwKDXT5l6eODyZEaUjwMRhBFUfl39fTfR6EoZpORDx7O4PO0kcnmaXPYebawRiqbY6jLTzSZQTw9ppyZMDM6oBz//vggVTQsbOxhMhiInRJ/NJkm0O4mmy/yzuQQ5XKZ9UPpMfF0jm6/B4tBj6jRcRxPIWq0VKoinR4n0XQBg9FIvljCoNfhcztxO6wcx7N0e+zsRNJURXDbTJiMRiLp05OBz8V+LM+T1X3+yy8Po1cRkk6nw+fzsbW1hdFoPLcPz2g04vF4lIWX9a0GvV6v9NhlQlNDo9Hg8/mUE7XH46khvGAwiM/nw+/3K62GRsWHTPjr6+tKXxkgFothMBhwOp24XC5EUTx3H/l1yINbOfryLSPev9fshje6vQBXj3mU1/msr6+ztrbWMOzlNpAdbScnJ6RSKSwWy40uwRuhvres0Wjwer309fXd6tjN1td4PJ6mg7ZmyBWKfPejF/za732P7z99xezoAC+WpV5pLnd2qa9R/eGppV0lVd5DpVqVBjx9XbS3uZgZHWB1a59YMsXzRcmSG/CctW9cLicgqRfUVz3JdIYvTY+SSGV4sbxJ9JRo13YP6e7wcxSOIYoi3V4nbXYzz1d38bY5FP0uwFiPn/mdILGUJB97d2qIzeMYeqORg0iKr0wNEE3leDDczScbJ2iDSYY62kGjoVSV2goOsx6zxQykeDTk58WOdFIwGY38tX/5HX75r/6ZmpO8wWDA4XAQj8cxGAznWgFqKZdsMFE+u0oFo9HIvXv3mJubo1Qq0dXVVfP4i0wWssXcbDZfuuZdHvLJzjRZC6+2GKuXXtYnnX1Rd6+98e0FURQRBKHhbfU2U7vdTqlUurOtvWrRv2y9lZcIfvDBB7c6dn1WrM/nU6rknZ0dDAbDjSISG62vqW93LC4u0t3dfeHqIRlP5pb5xu9+l9/57kfYLCZCUUk25bCayRWKVKpVrGYTlUqVYqmEyWgAUaQoSP/WajTkiwIWswl/exsdXg+iCDuHx4SiCRw2C7m8dByHVTIcVEURt9NBMpOlWhVx2W1k8gUq1SoWswmXw85Qbye7h0GESoXIaV7u1MgAS1vSpOzB+ACvNw4Y6w1gtliY3zqTnM2MDbK4dcjscC+pvMBRPKdslxjv8VHVW9g8kQZ8drOR+2N9fLR69vg//WCY7y1J+t+Aw0gkL6LVahnv8rAfy5EqlOjx2Amli5QqVf78PQ9/5y/9dA3xPn/+nNnZWVZXV7Hb7Q1bAeVymbm5OTo7O5VNwLlcjq2tLWZmZqQe+sICbrdbWVhZj/oWwLNnz3jnnXdqSLjZmncZiUSCtbU1pqen2dzcZHR09FwFnkwmWV1dbZh0BtLJQqPRvE3utaYE81ZUumpnWiN5lGwzrVQqPHv27MaEWy/6N5lMTa23141fvI7iwGQykVcNii5Do91mFwX4XJY0Fk+l+c0/+AH/+rf+kK39Y9wOG9l8gWy+wGBPB9sHJ6RzBWbGBlhY2yZXKPJwcoSXyxsUhRIzw30sbOxiMOh5//4k6VyBg5MwHpeTj19LvdaJwW5C0QTpbJ7JoV6Wt/ZPjznIwvoO8VSamdEBFtZ3SWayPJwcIZPN4nQ6QAOPXy0B8P6DKYV09ZqzGkIoVXg0OcyLFUnhMNDdye6J1FYw63V8ZWaET1b3qFRFHk4M8WrjALvFRE4oY9afHWeoq52qePZ7nu338t2FPQa9No5SAgajmUouT6VSxaSrUixX0Wgku/BhIk+b1ci31jOU/833+Nm/9CeU75Hc71TnMdSrAWRnmTwc6+3trVEuNFpYWf+dlFULsjJCFMWa78RFa95lqBdaynKwesgbMZpZi79I7rW34p1ls1mOjo4ulV5dVcGgRr0RwuFwXGq9lbf2Xua6UufzyrbkqygOTCYTiUSi6e1wviVxnd1mBoOhYabuwsYOv/Trv8tv//FjBrq8bO1L1d1of7diPuj0t7N9IA2mHKohjNEovZ+B7gAel4Op4X5Wt/dJpHM8nV8BwGU/+7ysqs/O5TzLQXZYz37utNt4MDmMyWDAYNDzcmUTOOHd2bN4xmD4LDXsIBjFabMwPdLP69UdAn7VZbDXxe5JBKvZiFYLy3shZeV6SRBos1vwedrYOIoyapZIZbTby8ZJEg0p7CY9DrOetROJ4AVRy4OhTp5uSoPIhwM+XuzFmO5yYrHYeH6qcBgMuHi5G+U7Wxn49R/wd/7CT9WsPgeYmJhgY2ODlZUVJiYman5/6gSyUqmkOBZlqBdWNgohB6kFILcJGn03mq15V0PehvH06VMSiUTDIZ7dbr8w6Uyr1VIqlVhcXGRqaurWqpvPK94a0rVarVeSR8mZtxcRYqMV4LJ07Co9J1mr2+g5GsU6XteW3Mwg0aglcZPdZmrSFUWRb/7gY/7ZN36HYrHIwqZ0ee6wO5D7qLniWXvn6HSIBbC5f4TJaGByuA+9TkdHu5udgxMisQRFoUSlWmVxfRudVkulWmX3OIxep6NcqbB1cKL8fH3nQLmaiSRSvHdvgnKlwsFxkP1gFPG03aDVaKiKIvNrWxj1OoRyhe2jMP52N9lcgfHBHoSKyMdzpyeI9jZ2Ttenr+8eMdbfSaFU4dnyDl+5N86TpR0AIsk0Qz0BXm4cAbBxHGO8x8dhPKuE37w32MFuPI9QkXq/gTabZEUDOt02hYxPEnm6T3/PUz1uXu5Kn9dop5vfWoqS/foP+N//4ldrfh8ajYaRkRF2d3cbhoirw8wPDg4a7k0bHR1le3tbIbT677HP55OGiOvrDb+7V6madTodTqeTra2tprZhddJZqVQ691oLhYKy6aX+BPK24I1XL4CkcbTZbFciLVnBUE9EgiBwfHzMxsYGu7u7aLVauru7GR0dxe/3Y7Var1wdZ7NZKpWKcglVLpcJhUJsbm6ytbV1a8WBVqtlf3+fnp4eRXGwurpKJBLB4XAwNDTEwMAAbrf7Rl/abDZLIpnk3//hj/gHv/xr/OKvf5PjSBy7TZJyAWTz0oLMqigSTaZw223kiwKJdJbR/m4Gezpoc9hps9uYW91i/zjEYE8HoWgCoVRmqFuKTyyVK9yfGOYkEkMolbl3+u9CUWB2bJBkJstQbwf3xodBA+u7h7Q57Lxe2SSZyTE13E84nqRQFBjo9JLI5ClXqjyYHOE4HKPD6+bR5DCHoSibByf0BNo5CksreApFgWKpgkGnY2a0D63OwNreqXxMFMkUyoz2BMiVKpIqISa9d7/LSnubk/2YRLAWox6z2UQVLam8wIDfxW40y34kzXi3B4NORzCVR6PR0ON3sXycZsJvI16okimWGe9sY/FQunKxWCz83vNNHnRaGOg7G6BpNBra2toolUpsb2/j8/nO6V/b29s5Ojoil8sRCATOGRPcbjfFYpHd3d1zjwfJ+FKtVpVYxvrvjqx8iEQihMNhvF5vzXNkMhkEQWBqaoqNjY2avwE15ES/ra0tSqVSjfQtHo+j1WqV1yrret9AZcPbq14ArkVY6i0SF/V/bwOr1aokdt3F6nI15N5vNpvl8ePHyqaJ25og5FbH0fExv/Wdx/zmHz/lJJrEZjFhMhgolkpsHZzQ0+Hl4CRCMpPl/sQgr1e2qFSqjA/1ki8IGA16jAY9P34urcZ57/6ZBbdSPmtZeNxtcGq5NRjOvoZmo4HJ4X7cLjtWk5HlrV1erWzylfsmNvakStNqUYXDiGdqBbNJIgm9Tkeb3cbDiSHm1rZZ3T4gdWqumF/fwW41k8kViMRT/KmvPGDzMMTH8xvcGxtQjnUQivGn3r3Hh0s7lCpVEtk87U6n9NhSlVc7QYa6AuyGEvR6nawexZnt95O2mhAqKBWwz2Hm5a40dHt3pIOnW1JlrddrMVUqGHVaMsUyogizPW4WDhNogX/2URhX4JCHI7XDUnVC2ezs7LmEMrn4aJZAJmfuNnp8oVDA4XAwMDDAwsJCQy2wXDXLVffU1JTyHHKFXL9tuNEQsP4+8o63bDaLy+V6q91rb7x6AS5WMNTf7+TkhK2tLbRarTKs8vv9t95tBmeX98fHx+TzeQYGBhTFwW2g7ivH43FFTvS1r33tVpNeOc5RkozFeLFxwDe+9Zjd4zBel13R0z6cHFbkXx88mOTxS2lI9d69CYKRGF3+diqVKk/mpCFYf5ef3UOpl+l22Eiks4iItDlsZLI5ypUqdpuFUqmMUCozOdRHm8tONl/gMBghlclSFEo4bFaKgoBQKuOyS8O6ckVSMeQLApVqFafdRr4oqRtmRgaoVsschBJkcgVcThux01CckYFehbS/cm+Sk2gCt8sBGg2vNyQXm0ajoSvgI5rMMNzZTrGqYTtyFqrz0+9M8nInTContXZmBzsxmSy8OA0sN+i1vD81yI9XpOd5OBjg1V6MB4M+ssUy21Hpvc/0elg8SGAxaBn3W3l1nMdq1OGwGAmlCjzoa+PVXhK3Rctf/ZOj/OU/ceaakyHrtOu3N7x+/ZqJiQmlPVa/Vqf+8eo8h+3tbex2Oz6fj0KhcOGWCUDZsC0/x9bWFg6HQ1E5iKLI6uoqWq22oW1Yvs/6+jrVapXx8XElSlI2ZcgmCpPJ9Ka5195ecwRIfyzNDBJyBScbIeSe0XvvvUdvb++tjBBqQ8Hq6irRaBS73c7g4CDxeLzh6uurolKpEA6H2draYmNjg2q1SiAQYHR0lI6ODoLBIJ2dndfWNaqPu7m5SbVaZXk/zP/59W+ysnvCxp7Upx3p8SuZtL2dPsVwYDQYyOUKvDM9ilAqs7V/zM5hkONwlDa7lYJQIpnO0tfpI5nJURBKzIwOEIollH8XigKTw/1MDPaSSKXZPQ4SaHfzYmmdXL7Aw8kRjkJRhFKJ8cFuwvEURaHE9Eg/oVgSoVTm/sQQyYzUypgZHSSeSrNzGKS3s4PtwyBVUeTBxLBijhjr75a2QnT68XlczG3ucxJNEIwn6fC6FRfbeLcXUWtkK5ggnskz2tdJLJ3j0Vgfi7shLBYL2YKAVqOhz++hJGoJJbNogNEOF1vhDBaTgQ63nb1olnJVJFcsMdTpYTeSps1mJFeskBcqDPqd7MTydDuN9Pna2Ail8TnMnCQLlCoik91u/t3zQ44iCb407MdsODvBWq1WLBYLy8vLeDwepWKV205OpxOdTsfq6qqS3aCG/PilpSXl8ScnJ7jdbkwmE3q9Hp/Px9raGjqdruHVn9PpRKvVsr6+jtfrJRgM4vV6le+83PJIJpMcHx+fa0fI9/F4PGQyGQ4ODsjn8/T39yv3k9VJpVJJUXS8IcT7drcXoDa9qtkyydHRUXQ6HR9++OGtiFZtKGimOLiqNVkNdSSlLDLv6+tTLrfUkIdpV3kfpVJJkaLl83kluGfzMMw//49/xL/7ox8B8L6qFZDInK0dWlzfxWwy4rRZ6Gh3YzLoeTq/CsDkQDfL2wdUqyJDvZ08X5Iq4p7TVDAAm9XMaH83Pk8beq2Gucw2T+dWeDQ9SuR0HY7688qonlunPSMLg8HAUE8HAa8Hi9lItSLyanmTB5MjRE+r8qLqiufg5GxljlAq8e7MGM8WN9g7iTDS383mQRCxKuJzWkmkczwYH2Rx+xCd8WyIZDfp+cr0ME9W9wENkwNOYukc94d7+GTzhG6vC6Nex4PhTp6dKhXeHenkIFEgX5K0p/2BNh6vHXO/T5KXLRzEsRp1ZIQyuVIVo1FP6jSUJ+CysHCQYLDdwqv9ODoNfLQZ4c/9X9/mH/6Fd/lg9Gw41SyhTD4Ry2t1mq1gd7vdTE5OKnkO9bv35C0TsmqhUV5DIBBQJGdyloIacorZ/v5+02xg9dLLWCymONTUt+t0OsrlsjI0f5NNFG9FpQsSsRwfH9cMqzo7O5XKUD2sCofD17K1VqtV5XJsbW0NQRCUNTNdXV04HI5zX6Sjo6MrVaKFQoGjoyPW1tY4PDzEaDTS19fH0NAQXq+3aS8rHo9jNpubqjDUxz04OMBkMtHX18fw8DCFMvztf/4N/rdf/Dpmk5HjsNRzzBcFioKAKEIym6cn4CWVzdHb6efR5DDLm7vsHofo9ro5OTVBdPvbCcqGCJuN6CmJlsoVBroDDPd1EYrFOTgOsXNwwkkkjsmgp1SuEIkncdqtFIoC4VgCu8WMUCqTSGdoc9oV08TMyACBdjf7J2Gy+QLru4ccnISxWy3SY+MJ2ttc5ApFwvEkPQEfqWwOUazy5XvjaDRaVrYO6PC6OY5Ir7Wz3UX4tPUw2NOBVm9gcfsQoVzh0cQAB+EEbocVh91KqlAhnpZ6wolMjncmB3m2Ll0RpHNF/vSDYX58ao4wGXSI1QrdXhdH8RxfHutUAnAG/A7ypSqRdIHZfi/rJ5LUrIqO/WSRh50W5o8zGLQaDHotmWKFdwbbWQtlMevgd14dshPJ8qXBdqXqNZlMtLW1sbi4iMPhIBqN1phmLBYLdrudpaUl2trazl15yY+XYxvVVSagmH729vbI5XJKmI0aFosFh8PB3t4egUCg4dVdM9uwGjqdjmQyycnJCe3t7eeIV7YNywlsn/OKt2ml+9aQbiaTIRKJ0Nvby8jICD6fr2kPqJmCQY1GioOOjo6GJN4I0WgUh8PR8AuYzWY5ODhgbW2NUCiE1WplaGiIwcFBPB4PRqPx0i9UOp1Go9HgcJxpWLPZLIeHh02PW66K/KNf/W3+yb/5//je0zkAYokUFrMRoVQmXygyM9qvuMq+PDuOw25lZfsAvVZD+NRkoNFoyJ5ejidSWWwWE0WhRDSR4r17k/R1+okkkjhtVp4vrhFPZXg0JbUMKpUqY/2dhOMpqTruDhCOpxBFkXemx6Te3mAfw71dZLI5DoMRegJens6tkM0XeDg1ysFJmGpV5MGk9G/xtJWwfxLGYbPwpelRbFYLh8EoJr2WrdP+sk6rUfqxiXSOd6ZHcNisvF7bY3Kwh4NTVUM6l2N6pJ9MsczOSYxen5tgMovXZSPQ7qYiioRTEgl/ZaKPj9eP6fO3kS2UGO/xsRHOEEpk+epENx9tSM891eNh4SBBtiDwwVgHH29KVwEzvdI2Ya/DRDBTptuhp9ttYTNaoNNlZi+ao1wVGelwcZQsoKmW+Vc/3KSzzcJoQFIGyHkMi4vSzrd6p6LZbMblcjXNUpAfv7u7i8vlalit+v3+pnkNIBGmrGqw2+0NZyR2ux2TycTy8vI5UgXJ2abX6+nq6mJpaelcYSTbhqvVKoIgYDAYPs8V79tPuvIZ+yrhyIIgkM/nz/nJZdnY+vo6e3t76PV6uru7LyXxRlATu5xktre3x+rqqtLyGBkZoa+vj7a2oz6vBgAAIABJREFUthuFnheLRXQ6HXt7e6ytrRGPx3E6nQ2P+3s/fMZ/87d+gT98/IKTSJxAexvZU+vsg4khpWc72B3AZbdhMxkUmRVAMpPDdVqVZvIFpob7CMeSVKpVvnJ/ku6AFI7d5rTz0aslcvkifV0Bjk57qu1tTkJRidRMBr2iJujwtdPb6aM34CNXKLCxe8hhMEK5XOEwJD1Wp9WSTEu5CVqthuRp+0EDpDI5uvzt+DxttDlsHIWinETjHIdjlCtVUtk8DquZYqlMKptnZmyQLp+HNocNq8XCqzUpNawoCJRFae36xEAPRqOJtQOJGIOxJD91f4xYrsR+NEUokeHRSDf9AQ/PNqX+cbvdTH+nh9d70uc4FHCyH8lgNZtosxqJ50rkhQpdbhv78Tx9XjsDPoeibOj3OjhK5HHbzURSefwOMw6riZNknvt9HuYPEthNOrJChXi+TCRd5I8Wj3nY78FpMWAwGLBarRwdHWGz2c6lg6mJWe7n1iMejyvE1ygo56L+bDabpVAoMDExwfLyMmazuWFCmdVqbVp5h8NhbDYbXq8Xp9PZ9CQhZ0oLgoBer/+8Eu/bT7oXDdPqUa1WCYfDBAIBcrmcUh0eHx9jsVjo7+9neHiY9vb2G0tVcrkcyWSSSCTSMMlMHnRcF3JP+fDwkOPjYwqFwoXHXdk+4K/8vV/kF3/td/G5XYrO9t7YIAentlePy0kolmCkt4NiocDWYYhoKks2X2R8sIdoIkVVFHk4OaQ8Zqi3E397G35PG6lsjpdLG6QyOVWLQiSaSGExGRBKZSKxJN42J0KpTJvDxv3JEXR6Latb+zisFl6vbhKMxhXdbTKdZXpkgHAsIf179Ozf70yP0eH14HY56O/ys7i5y87RCW02C+FEmqJQ4uGpTrdaFXk4NUo8mWFmpA+HzcYnSxtEEimSqQxGkwmhVCZXEPiZ9+5xEs+wcRgmmcliNktk/d70ENFMgcNYFhEw6nX0+T0sHSUQyhV0Wg0DAQ86vZ6jeJYBn5NItkyyUMZn1WKxWDhO5HGYpXjKUKqAy2rEYjRwnMjz7pCP13txLAZJURPKlvBbRGwWE/lShVS+TKFUYbbXw3Yky4DbyMpJhqNEjh+thSiVq8z2uCkWCmg0GsLhMFqt9tzwy2Aw4PV6WV5exmQy1ZBiPp8nl8sxPT2tDG7rNbby0KtQKLC3t4fX61UIL5lMKoacywZw6srb4XAopHp4eIjP58NoNGIymXC73SwtLTU8SchmGUEQ0Ol0n8e8hrd/kAZX2w4siqJECNEoH3300ZU3NlwF6uzcaDSKTqdjfHz81klm9S62trY2PB4PWq2W+/fvN3xMJpfn53/lt/jRiwUW1qWdYB1eN1unlavchwWIxRNMD3azuC1Jnd6dHuXZguTacjvO/mhCsRQel4OJwV4Og1FCsbgSKC5nLkTiSaaHe1nc3KMolJiaGGRj74TxwR7aXQ4ev1xk5ziMzWJi81TC5XKePYfNevY7sJilKshuNdPp8+Cy2YgkEoDIyyUpbWys7ywLQKu6XI0lUxj0OqaG+0EU0Rv0vFzdkYY2vV1sHwZJ5/K8/2CIbEEgVyzxYmWHrCBlTqSyeX7q4QDpYpWna1J4zXvTw2wcx/F72vh47YgvjfUwtxdmur+DFztSVfzBZA9rJxnShRJ6rRaL1UaxUMCs19Hva1OGaOUKvNqN8icmOvhwXWpB9LtNrITz+G0G9tMVCvEE7w952IkVGO9w8mI3il6roaLRIyIw2m5iKZTmGx9t8YcLh/y1r3bT65LS7ZqFlTfbIlEoFDCbzYp+dnFxkXK5TH9//7nvlnoppqz1VbvYrrLm3W63n9s2nM/na04EjZZeqqFeevkmudfemkoXzgi10c/VsrFcLndnsrFyuUwwGDyXndvX10cymTwXUnKd4zbrKcth4kdHRw2Txr75w2f8pf/lF/j+s3mGegIcBKVLXkEoky8WEUWIpzKM93XQE2hn4zDESH8P+yfqVoBEyqlMHo1WQ0+HF7/bhU6n5dXKFslMlnemRxVJ1kCnTxmu+dyuU1mXlIuwdxRUDBWZbJ6qKJIrCGi1GsqVKpH/n7z3DpIsse/7Pq9zzjnN9OS0M7szu3O3hwNwPMh0lQ0L9h9mcCDpKosQWaDwj1S8Mm0XJZMlguUqEQBNC1bZgopkmabKJGURoCCRwIEgbu82p8mhe6Zzzrn7Pf/xehq7t3OBCaJwv6r9Y2d63rye7vfr3/v+vqFSw2zQ0+33KVZqBL0uomE/Oq0at8NGIpPnLJWj2+txnsmTK5VxWky0e33K9RZhn5t6s02hUmN5JkLQ58ZqMuJ1O7i/e0wyV+TqWJUGEHQ7KNaabCxGGQyHxHIVcuUa7W6PGytzpIpVtldmOUrmGQpKGmMc2Gk2oNMbOcrIMEm91eWl5SluH8spIwGHiUZPRK9VUesMuDrtYSdVpdYVWfPp2c+1EZFYCTk5ytUx6ZQU6h1CFhVei469fAeVAjw2I4VGjytBC/cSNZSCxLTbTKLcZmvayV6mTtBmIFHtIkrgt+nZSdWIl1rkmkNeWQzg9/k4Pz+fJPO+26/hQhE2HA6xWCyUy2VUKtWEBuZ2u8lkMpPsu3e/h81mMyqVioODA5xOJ4VCAYfDMZlaFQoFXq/3fRdwarUat9vN/v4+SqWSarX6QoO+iOE6Pj5GkqTndhjwvQXb30D12kdn0r2oD6KN3b9//y9E64IX42tcLhczMzOYzebJOUiSRLfb/YAjPV/vtqJ0uVzvqWK7zJTmJJHhjV/7F7S7PbJFuTHsnibRqFX0B0Ny5SpzIQ+ZUo31+WkUCgXffSgLGlLPeCY8PY7jspkpVhsEvU5CXif/7tYD4qkcL69/z0wmO2Y9ABwns1jNRuYjAQbDERaTgduPZCOblbkIu8dnFCt1rq8ucPfpAa1Ol62VOe7uHqFUKNjeWKLRalMq13A5rLx1X14KvbS+hChKiIzwOCzkylVEUWI+GqH4cBdJkpgJBwh6XfR6A7RaNe88lulsK7Pfm9JiiTRqlRKNWo0gjVieDvBojOfevLbC209PAGi2WlxbjHL3UBZMhH1uMiWB7ZUo946zrM3I3rQ+uwmdXseD0yxeqwGtRk1nIJEpNfFa9dxc8HNrPMFuz3m5fVpgyqbBbjLyKFFGEMBj1nJS7GDQabEq1fisesJOI3dOi7jMOuJlGff2GpV896jA9oyTTFX+mlGnYlCVWPObeJqpY9WriZU6PEk3KXYl/ruPz7O2usr+/j4nJyfMzs6+4FD27EQ7HA6f23EoFAqWl5ff02gHmCRsP3r0CIVC8QIE8H4x7xd1kTZ8QTm7rJ4918sYFv+hqdd+4CbddDr9oWhj9Xr9AxkMz9YF9ntwcEA2m0Wv1xONRieKnXcv8ARB4Pz8nHA4/L5vgG63SyqV4ujoiHQ6jU6nm1C73g9TFgSBRCJBOBym0+vzld/9I/7OP/wyp8kspVoDrVrNYDii1x+wEPFRrDZQKARurC6SK9c4Os/QancZjkaIokSt2WZ5JjyxQdyYj2Ay6tmPJ9Fp1BQqcgRNqVpHpVAwHInUmm3mpwK4HVbCPjdep43bTw7IlSqszk6RHGeORfweMgW5qVtMBkrVOnNTQTxOuxx9XqpSb7Y4OUtRqNRotjtj03mJWr2JQqlgOBrR6Q3QqFXYLWbsNhPRoI/BYMhRPEGz0+U0kSFTKBMcU8YKlRorc9MUq3WmAl42Fmc4zxZJFSqy4m5sTF6q1FmMhpjye3h0nGTK7yZVlJ+vSilwbWmWt/ZTiBJkyw1evzZHqtYlV23TG4xYm3JTaAwpNrogwHLYTa7WQRRhNWSfmJZ7zWqq7QEKhZIrESdP03X0aiUmnYbjfIN5n5mRCLl6hymniVS1w2rAyn6+jVIAJIlio8cnF73cPythN2oot4f0hyIRi5JsY8icx8TdeIl/df8cQRD41LUFatUKhUIBp9P5wnvU7XaTzWapVCr4/f7nllYXGO4F28btdr8nXezs7OzSiKsPI5BQKBSo1WrK5fIkev6yxzx7ru9mUFxMvE+fPp2IPf49N973nHR/IGTAFyWKIvv7+7jd7uemzsvq3Vlm767L0novJMMfNjvtzp07rK+vv/D4Z83PL271PB7PB1pBvrtu3bpFZajif/713yZdKGMx6qmMt/xrMyGejEMary5F5abV7ZMulFEplTTG7IGtldmJoGF7bYF2t4soSmRLZWr11sS82+ewkC3JjeilKwvsHJ+xOjeFTqvhzduPAJgN+yc4rcVkYDAY0On2USoVhH0uHFYLKqVs33d//DuvLs/ycCwxvsCCATZX5rg/Tul97aWrtDs9QMKg0/Hm7QcAvHJtjbceyBPxzWur3BpP7dvrS9zfO2YxGibgdvDk6IxcuYrLbqHVG9Edu6JFgz6GooTP40Sl1nJ7T8a+FQqBpdlpbGYjD06zmA06RIWGervH9nKE3WQFm8VEqtzk2qyfvUyN1bCLx2clrs54uRcbRwQFjByXB7QHImshOwfZBkNRYs2tpTJUkKp22Yg4eXRexmvR0RmK1DsDPrXi59ZxHp1KiSRApdVna8rOvbMKXpOaWk8kZDfgMmt5+6TIit/KbrqKEvDZ9KSqHa5HndyNlbg+7eQX/vY6mm6ZVqt1qcOYJEm89dZb2Gy2S8MmAZLJ5CQ37d1QnCiKE5/q98pugxcN09/9PZVKRb1eRxCESy0oL8719PSUbrf7wrmKosjdu3fZ3Nz8m5C99oMtA76oCyemD8NzlSRpwmB49mvPYr/NZhObzcb8/PxfCPutVqvo9Xq0Wu1fOWXsNJnljS/9Fr/3J2+TLlaQJInFKT+5caqu02alUKnjd9uxmgxkihVSuRLDkWzefYHzuu1WcqUqS9EQEnCWzpPMl+j0BswFXZMssdW5KVK5EhGfG4/TRipXJJbKkSlUsJoMdHp9KvXmhGXQ6w94eWMZn8uO227FaTVz+/E+qVyRgNdFZgxnGLQaKg2ZUaFSKGh1e0wFvfhcTtwOK4Mx8yGeynCeyY9FDxLD0Yhas4lGLbMjStU6kYCXuakgAmA2Gtg7PuM0kWF2KkiuVKXd7bG9tkCuVOXq0ixOm5ndswyZYpV0vsRSNEyx1uTaYhS1WsWjswKDkUinN2BrPojBZObxWYn+UMRtMbA05edurMBIlCg3ulyPurgTlyGX1aCVvUKXiMtMxGXiKN+kPxK5Erazl2/T7Q95OergTryCTqXAYdaRq3VZDVq5E5PhhXmflcNsnZWAVTbCEcCmV1JuD4k4TTxKlLkRdZKrd2h2hyw41cQqPVwmLelqm8FIwmvV8xvfPGDa72Herb/UYUwQBDKZDHa7/T0n2gsmw2Xihk6nQ6vVYnl5+X3pYheZacfHxy9Ik9PpNC6Xi0AgQL1en/z/vWTDl7mltVqticPa34DstR98ythFvdcy7d2lUqmIxWIEg0FKpRKxWOxDq80+7HlcSG/j8fhfGWWsUqvzK//sd/jcP/5nJAsVZp/xSDAYdFTHTbLV6fLxzVWOztIkcyWuLkRJjJdeWo1mYgRj0GlZnQ3xYD9GrlRlLuSmMJbUOm3myePcdisRn5vd0wTxdJ6laJh8qcpIFLk2FiaAjIEGPE58Lju5YoX92DmZQolStY5Br6PX75MrVvDYLbQ6PSqNFtvrS4R8bnRaDU6znqOzNPFUlpDXxVE8SavT5caVJZK5Ap1ujxvrSySzBXRaLS9fXcHjkGOFvE6b3NjzxTGkITdAo15LrdVmLhLEpNehUqnZPU1yni2yvTZPeqxSW54OYDCaeHqWJVOqsb0SJVdpsr0c5VG8SMTrJF1u4rQYsFnNiJJIrt7FqlNhN+nZy7a4PuMh4DTzNCXT7NwWPcMRiBKEnUZOC00GI5GNiJPb8QobQTMem4m9TA2fVUep2ac7EFn223jnpMDNOTeZaodGd8j1qJO9bBObTkGh0aU7lPBZ9fKxHQYO8i1ECbwGBYXWkCW/hafJKqIokii3uZdq88q8h/R57LmmJ0kSmUyG1dXViXXks3SwizKZTGg0Gvb393G5XJMBpF6vMxqNJnFV70cXM5vNqNXqyQLu4hgXUJxSqZzYOsbj8UvPAy5XuJXLZZRK5QSeuMCq/z1BDR+tpvtBfN2L+JoLrutfVaLuhVw4FotxdHSEJElotVq2trbw+/1/4eC9TqdDKpXiN377D/h7X/g/abS7pMeLMglZvguyOmxhKsh00Et/OMRsNBBPy8uc4WhEu9udMBe2lmfxOiwcnqex6DXkK3Kj1Wq1NMZBktVGmxurcxj1enZOEkT87glbweeykxuLHVqdLjNhHzMhH4exFIIAe6cJas0Wm6tzZPIlBsMRcyFZfabTadleX8LtsCFKEiqVkgc7h2SLFUxGI9Uxl1gQBFrtLtI4U81hM7MwHUalVGI26EjmCmTzJaqNJplCiVyxgt/jpNFqkymUWJ2bxmW34rJbiYZ8PNg7JZEtMBv2TxrtcDhkfWEGFAqenqaYnwpM8FyXxUAkGODOcYahKFKqNbmxGCbX7JMqt8hV29yc91LrC+Qa8msQcplBUJCqtFgO2jkvt8nVuyz4LQxFyNU6XAk52EnVECVw6AVa/REmvQa1UkG+3uVKyM7DRAUQMOvUjCSJ5YCNe/ESSDDtMpOpdZl1aNnJNKm1+1gMahwaiYjbyl6uhUqQFXjN3pCtaSe76SrlZpd3zhoshty08ueTxtvv96lUKvh8vvedaEGmcRmNxucUY+VyGY1GMxlQPB4PJycn7+mnazAYMBgMk2OoVCqSySThcHjymGeb6mWGPfCiwq1YLGK1Wife1/+e1WsfnaYLXNp0321SfpHJdPXqVQKBwJ/LpPzZuozadRG3bjKZqNfrL7jjf5i6WF4cHBzwJ7fu88//9Xf47X97i05/QLc/QJQkRqJIq9NjfX6aXLlKNOglGvTw3Qf7NNtdWp0Ooig/rtnusjYXodHqsBTxMRKHE8y3OxRRCALD0Yh6q8O1pSghz3gKEUfsx2WcdjAc0e/3EUWJXKnK6twUs2E/g+EQl93K24/26Q0GzIb9kylTEkc0Oz3cdishvxev00Y6X+IkkUFAIJkrkC9VJ7BEtd7k6vIc2WIZq8XESxvLOKxmmq02U0Evtx/uksjkmJ8OkcjkGQxlaloyV0QURdYXZ/C7nfjdDkRxxO7pOYlsnnqjKZsE9Qek8yU+dnWFkM9NtljFbjGxn5A/nDKFEi9dWcRutfL0vAiiiCQoMOo0BJwWUtU2kqCiPxrx0mKI++cVloMOio0eG9Me7sVLpKstXl8J8jhZpTcQmfdaOC+3qbb6vDzn5kmiymAkcSPq5FG6QbUzJGhRY9RpUSuVZGsd+kOR7RknD88rKASBeqfHSsBGyGHgUaKCVa+iMxDpDiWuTzt4nKjSG4k4zTr6Q4klv4XDXBOHQU2u3pWn67CDnVSVp5kmotqAvpXB5XJOFJoul6wqfK+J9qJ0Ot1zirELuOxiJ/Fh6GLPHsNgMNBsNl+4Ti7O496TPXzuF2XD8LzCrdfrEYlEnmvQF+q1Xq83sUX9PtVHY5EGz3vrdrvdycLq4vbnWX/bw8ND7Hb7c6TrerOFxfT+jIbL8se8Xu8Ly7vBYMCDBw/Y3t7+UOfdaDQmizutVkulM+Qrv/cnfPvuU7RqOZ3gQgJ7fXWeu+NF08vriwiCwO0nh+i0GhSCQLMj09U2l2a4v3+KQhDYWp7iOFmg0mijUSkxGXQT+GB7bZ47O0dsLs2i1aj47kOZ7qVRKWXeaVOefm+szlGq1nE5ZO7nO+Pllddpo1ipMhzJDdzntDIUJWbDfrQaNW++8xAkiZtXVybLr+trMn0MYHk2QqfTw+d2oBTgMHZOoVLDabPQ7vTodHuYjQZUSgWVehOdVoPdYkFCIhLwYjLoOIqnSGRyXFma5cmhHDj58tVV3n4sP5dPbm8wGEkUSrLNZLnVo9uTaXeba4uMEOgPRGrtHs2Rik5/iEqp4PpihN1Cl1ZPFk5cnw8wFDQ8Sci4dMBuZC7g4jsHsvBke9bL/fMyW9MuGt0BZ6UW7f6IJb+Vs1KTKyEHw5HIg0QZSYKtaSf34mVMWgXrYQcPziss+qw8PC+jEGDRb2EvXWPRZ0GUJHpDEatezZNklYhNQ6raYyTBvEvHUbHLWtCKQlDwOFlhxq7mtNJn1m0iVmgiSrAWsvE0WeX1JQ//6bTA2myY4XD4wlK5UqlwdHTE2trapRhtu93m6dOnKJVKVldXXxAXSZLE/v4+KpXqPfnq7XabR48eTcQS765751XmrML7JgmD7L1y9+5drl27duki7/T0lF/4hV/gD//wDy/9+b+G+mgs0kC+JY3FYuzt7U203O8VX9Pr9V7wYChX6/z9X/o1Xr62hvGZEMROpzNx7bqgdk1PT0+oXZd5PiiVSuLx+HvGX18s7uLxOAcHB7RaLZxOJz1Bw5f+n2/whX/++2P/ADkCfHNlbnJ777RZKNcarM2GOMsUKNebtLs9BsMR6wtTk0garVqJz2XDZDSwG0/jsJpptDqMRImrizOT480EvSgUSnZPEyRyJeYifsq1ppyGuzxLKl9kZSaEQa9j5+SMZK4kx+E4bOOpusvGwjTtbo+NpVkCHgdPj84m5jSNprwAq9QamI0GOt0e/cGQG+uLeBw2UrkCPpeDO4/3SGTyrC/NkszKGO7W6rzsxzAacfPaKl6XHZfDistmZfckTipXwKDXcXImK8d0ajWdfh8EcNmtLE6HUCoUPNo7wWYxsR9PUW+12VqZo9npc21plkarS77eJVms0+r2iXosRIJ+UOs4yFTZnA+SqbbYXpxiL1PHZdFTbHS5GvWSbfQ5zdfZnHERdJi5Gy8hSeCx6NFpVKSqbZYDNmLFFt2BiMuiYyhKDIYi62E7d2NltCoFHpOKp5kGV4I2ekORYqPH9aiTR4kKDoOG7mBEstJmwW9BpVBQbffRqFTUu0PmHWqOSn3USgGtSslhrs4PLXt5mm6AJGHUKKh1hmyE7TxJyks5CYE/OmpiGtWZ8dpe8CLR6/WTafSy+J4LWfHJyQk2m+2FxiwIAi6Xa2LA/27K2sUxLpScOp3uuaZ6/7yKTq0g7LJeKht+97V0Ibu/bJH3rW99C61Wy+uvv37ptfjXUB8teGE0GhGJRCbMgPdiHFzGYDAbDXzr1l3+wS9/Ea1aidWg5ejokGKxiNFoZHZ29tIG/l6VTCYJBoOTN9u7cd/BYIDH42FxcZHTTJlf+j9+l9//k1v82X05nWFtfnqiFFMrVVTHlLCA247HaePx0TmdXp+12fCk0UqSSLPdI+yVaVrdwZDTlKyaWp0NT5gLnW6PhakgVrORBwcxpgOeiahiJuglXSijVikJeV0Y9Tr2YimSuRKrMyHylTqSBDMhL4VKjSvzUQwGHdlimVgyy1kmTzTopVJvUmu22L6ySDpfYiroY21+GkGBbM+o1/Fw74h2p4dCIdDryYkQjVYHm9lIJOBlNBwQDfup1hscxhPotGqeHJySyORYX54jV6xQKFd5eWMFrVaD3+NkYSpErljhLJXFYTWzdyoHaioEGbdeno0wHA0xm4zcPzynWGvgtxnpiQJbK3MUmz20ajXxcXKEzWxgeSrAraOczGgYjLi5FOSd0yL9oYjXZgCU6DUq0rU227Nu7p+VSVU6vLrgIV5sUe8OuBaR3caytS7XppzU2wMqrR5LQRuH+RZOg4pSq0e61uH1ZS9vnxRQCBByGkmU2yx4zexlaiTLbT425yFV6WAzqMk1BwxFuBZxsJepYzdoyNQ6+K06lgJWdlJ19GoF3YFIuy9bRu6mazL+XhySKtbZmrY/l8IMTDwQdnZ2LnUPUyqV5PN5Go3GpX4PF2yDdrtNIpG4dDGWz+cJBoMkEuPQU7OZXL3Lv3qc5T/fkGXeF4Y9e3t76PX6F+iVF94PS0tLk7SKZ8/ld37nd3jllVdYWlri+1Qfraar1Wo/FGh+wWC4APAlSaJer2M1aPitP/gGf/zdO+ydnBGNTvOpT3xsAvr/eeoiLLJSqXBycsLJiax8uhBtGE0W/vW3b/O//87X+MXf+C1Ok1nCPjfpMSba6shBi6IoUW00+fjWKhaTkSdHZ4Q8TjLF74Us9gdyvLxCoeTVzRWeniRIFyvMhn2T45VrTfRazZg3a0av0/L4MA6A1WyYmIFX6k1evbZMu9tnP5Yi5LZNeLpKhYJ2t4fDaibgceG0Wnh0cEoyW5SlwdkCkgRhv4dCpcrK7BRGvQ4kkdNkhlgqi9mgp1pvUChXub4mN+TBcMgnbmzgc9lRq5T4XA4e7BySK1XRqVVkx9Q4p81Ctd5Ao1YT8XuZCnpx2Sxk80Va7S4HsXPOUllCPg/lWoNsoczHNq/gczsw6fVYTToeHMTJFit0u10sZjN2m5mg10PQ6+SdozTNbp9SvclaxIPH52U3XSNVbrAadhHx2ql2R+yna2xF3QQcJjK1Hrl6l3qnz6uLPv7sUGZz3Jhx8/ZpCbNOzeaUgzuxEiMJtmdcvHNaotLq8sllH/fiJUw6tRzZ0+gzZVPzJN1g2mVm0W/lwVkZh0FDbyTS7A7ZmnJy67iAQaMgaFWTrPaJOnTsZeXXb8Fn5qzUwqRTka50mPeaMaslzqs93GYdmWqHwUjk6pSDk0KLUgf+dC/FqteAx/788kutVuN0Oi9teL1ej1qtxpUrV56TFb+7bDYbo9GI09PTFyhrF8wFv99PLBaj3u7yT9/O89lXpzFpv3e9XciGDw4OXmBH5PN5jEYjFosFr9dLLBZ7LvTyi1/8Ij/7sz976bn9NdVHq+nC5cu0d5dCoeD8/Byj0ficL8N0JEynP+DB0wN8Hidf+e3f419+7Y/RatQEfZ7nYIf3qsFgQDabnfxTq9WEQiHm5+exWG3cerjPb/5/f8xP/+Kv8bVv36YaJ6JaAAAgAElEQVTT61FryHhtvlzBbrXQ6fbo9PpsrsyhVquYC/vp9Ho8PZYFBPVWG4UgMBLHXNKVWSJ+N4VqE61GQ2Y8+eYvhAGdHi67hevLs9zZPSFfriEgJ/vKrmANri7NMB3wUG93UQoQG7Mfmu0eep1GZhFYTKzNRjhN5jhLF/C5HRNJcKPVRqfTMBXwYDEZCbgdPNg95jyTZ2VumkRWjocP+dwUKzXmIkGcNgsOi4l8oUQik6fb73OaSJPKFWXXsXKVcl12CfN7XFjNJhajYeKJFOfpLEGvm7uP96k32yxEw2SLZTQaNYvRMGG/B61axeFpnE6vx/F5mmyhzI3VeVq9AcszEVxWE6e5Gme5EueZAtvLUZxOO163h9NiEwGBRm/EQsgJShUDSSBZbuEy6zAZ9AiCgnSlTdQj0wAfJ6vcmHERsBm5Gy+BAKtBG/fPKmyEHYQdRm7HSgjA1Sknbx0XWQlYcZt1HGTrTLtM5Ot9ekOJGY+Jx+cVrkYcKJUKEuU2UaeRo1wdUYJpm5on2TYvzzgpNAc0e0PmnWr2si2UAjhNOtky0qjBrJetIgNmNdlGnymnkaOsfJylgJUn6Sa3T/IYFSOWw8+by1zE91xgtBcwQKPRmNAsP8js/Fm/hmcZCYlEgkgkgkKhwOly84++to/PAD98JXQpZHcZOyKZTE4M1C+M11OpFI1GA6vVype//GV+/ud//vtJHfvoLNLgg4MqL27x8/k8mUwGj8dDIBDA6XROPoET6Rx/9xf+MQcncYx6PYlMjpubV7j9aIePbW3wmR9+jY2VedYWZ9GMhQ3dbneyYBsOh3g8HkRRRESg1hlw9+kh93cO+eY7D2m0Omg1agwGPZULAcL8NLvjhvrKtRXeerhPxO8m5HVy6/EhEqBSKrCZjZTGC7CN+QiPjhJcW5pBo1bxztPjyfOM+N2TyJyPXV1iJIrc3zvFZNDT7nUnS6TrK7M8OTpjbTZMp9tjd+w2JgARv4uzdB6FQuBvvbzBWTrPfjyF02qi3mgxGMr+FauzYYrlGjNhH2qVim/feTQ5h0yuwGA4QqNWMRXwYDYaUCoUqFQK3rr7BICbV1e49UBOEL6yOMOTw1PCfg+z4YBsdJPK0mp3kERZfqzVqAl4XcSSGQRB4PraMsPREJ1Wi1Gn5du37zMYjlidm2ZnDC3MhP2IKPF7nLQ7HQaSkoMz+blury9znKuzPDdNsdHFaLGxm5I/tK5M+1CoVOzkZeMbs07N1lyAe2dlWr0hKoXAq4t+7p2VaXQHBO0G1ColaqWCRqeP32bgwZiFsDnlQJQkDrN15r0WHpyXMWiUhBxGUuUWV8J2jrJ1Ss0eKz4Te9kmErARsshG8Y0uQ0mg0hmxEbbxKDE+x5Cd7kA+l3ixQWcgshmxc/+sgl6txGrQkK11eHXezaPzMs3eiFmPmeN8g4hVzXlNfi8s+S3sZ+r81zcC/P2/fR2t+nmq1nA45MmTJ3i9XgKBAOl0mtFo9Nzd4gctz8rlMicnJ6ytrU2ifra2tpAkiX/0tQOKrR5/d12HAvFSz4eLa/iC+RCNRrlz5w43btx47rGSJPH222/zla98hWazyTe+8Y0XjvPXWO/Z3X8gmy7Itz3P1nA4nJjJXCysvF4v+Xweh8Pxgm0cwBtf+HV+74++yebaEv/uO++g1Wgw6nWUqjVubKxw5/EeKqWST25fpVyrYTEamQoHaPeGdHt9tFoNbz/cIVussDQXZW8scd1aW5zIYF/ZXOWtMVPg+toC98aMhCtzEYajEftnGSQgGvITG+OyNzeWeHts6vLSlUWKlRon43SExekQB3F5obS9Ns/DgxibK7PEUnk6vT71Mfvh5SvzvP3kEJVSycZciFi6SHk8aV+Zi/BkbAe5tTyLSimQzJcpVurYLIYJ7ntlJshuLMX6QhSDTss7j3YZjkSUCgURv4vThBxh8/HNVXr9Pr2eHAX0+EB2jLJbzCCKVOoyHri1ModSqWAwHKLXqvnOuHHfvLbGrftyQ95YmuPJwQkhv4fZqSDdXo9UNk+z3QEESpUaapUSr8tOKlfCbDLy0saKnDSczeNzu7izI9tCuh02dCYLXpcTFAIGo5l3TmX83GzQcXVtlfpQwV6qgsOkRSkIBD12Sm2RYqPDYkBeePWGcFZqMeM24bXqeJio0umPCNr12A1aesMRmWqbaZeZnVQNvVrBethOpt6h3Ojhs+k5yjXwWmS8NGgzMBJH7KVr9EcS83YFR5URaoXMPGh2RfrDEflGh05/xPaMi9unRdRKgQWvGQno9gbES23ECTuihN2gQQLUSgXTNjV3Eg3USgGrVkGxPeLqlIOHZ2WUArhMKvQaFf/kv3mFRf/zbIDRaMTOzg42m21yC39BNwO52Z2cnNDv91laWroU6qvX6+zv7xOJRKhWqywsLvJrf3LC7XiFz78+w8tROcmi0Wg8F/P+bEmSxOHh4YT5c+PGjRceI4oiP/MzP8P9+/d58ODBn1tq/5eojw574aIuuHkXSRCJRAKVSvVCnM97pUgAXF1Z4Dd+6//lKHbO9sYKFrOJgM9NIp0jVyjhtFtotrsMhkOOztKcZfKoVGq+ees+R/EEFpORg5g8ZUVDPtJ5+RbcZbOSH8t1h0OR9oXdYq3B8lQAvVbN4XmWcMA7wWznI4FncN4uEb+bsN/Nvd0TpgLeia1ixOckW6wiCAJBjxOjUcfDgzitTo/N5ZnJEq3V6RL1OxEEJUepImtzkcnxLUY9vf6Q6yuznGTyqBRKTlM5RqLI0nSQdKGM02Ym5PUgiQMOzjIkskW21xdJZotIkkTY5ybid+O2W9g5jjMaDjmMJ8mVKry0sUwyW0ClVPLSxjJuu5XBsE+72+N0DBkUKzV8Lgf1ZotqvcHNzSsEvS76gz6zkQBPDo6JJdL43U52j2N0uj38bhkLXoiG8TrtWE1GEuksyUwenUYzhiwKfHJ7A6/LgdmgQxBla8fzbJHzdI5Xry0RiUzRU+rJVJuo1Gqa3SHLYQ8anY5io0O20cdp1mMz6tBp1BM1mcWg5bwspz5Mu0ykK11S1Q5WvZoFn5V78TJOkxaXRcfTVA29Wslq0MaD8wp+qw4RyNe7aIQRtVYXk1bJjMvIbl6m/10J2XiYqIIkMesxc1poshqw8SRZQZJgc1pmOnQHI2Y9FhmKsKnZzcp3RQs+C2elFla9mnS9x4LbgF0rcF4bYNaqaHYHdAYjtmacHOVb9AYjvv4oSW8ocm3KgUIh95EL85lUKkWlUiEQCDy3VP4wy7OLpJe9vT20eiNfeDPDTqbB9rSdH70emkj6h8PhpTjwxe+5EEW0Wq3nFtbPPub+/fsEg0G+9KUv8ZnPfOYv7Zv9Ieujh+menJxwfHw8SYJ4LzewyxgMF2XQ67CZTTw5OMGg0/Jw5xBBEgn5PVTqDVYX50hm89SbbTZXF8kWSuSKZUJ+L/Vmi0Kpgt1qpdPtUShVcdnliJx8qcJMOEC13qTd6bKxMIVrTOUK+tzsnMqiBavJSKkmL0YK5SpOmwW3w0rI48Sg03FvV17K2SxGiuMFWLZY5WNXl9Fo1Dw5STAX9pEcN/tytY5GpWQ26EGlVuOyOzg4k6dRSZTo9wfodRqiQVnEcOvpEZ1uH4fVOOHzGvU6ri5FOT7PEM8UmJ8KTpp1rdlmfWGKoMfJXixJwO3g7tNDBsORjOFW6wTcDpw2CyGPk3gyw/FZkoDHwUEsQb3ZYmttiUazxfx0mKDHhU6jJpsvUWs0qNYbnJ6nyBSKTAd8NFodFILExtIcTpuVYqXG7FSI2492OEtlcTvslKt1tFo10yE/s5EgSoXAo91D/G4nd58eUixXuboQYXo6is3h4PHhOR6Xi+NCC4NOy3zYj9Nu41GyRqnVx2E2MGVTk2qMSFW7lFt9Xlvyclxokal10KuVeC1yrNN5ucXWtIPTQpvTQouPL3ho9oaclVpEHAZGksRuus6NaRu1do9co0/EpqbYGlHpjpj321CrVKSrba6FrTxM1FArBEJ2Aw/Oy7w06yJb61DvDticcsiKNWDZbxub3TgotYe0eiPWgxYeJ+UP+pDDSLrawaDToFEKVDsDloM2TgtN3GYtqWqb4UhiI+LitNAilqvxjacZFnwWfFZ5UrxwKIvH44xGo0vpYB/UNDUaDclSg3/6do5CW8Jh0vL3fmgWs+57y7MLufzh4eGlyjRBEMaCHZFsNntpg//yl7/Mr/7qr7K8vEwgEPh+TbsfvaZrtVoJBAIfSO16N4PhokRRpFwuY9Qq+MNvvYVapUKr0XCeybMwM0W51sDttOPzOGm1uxgNOgrlKpIksTofJZktyL4Eq/MksgVEUWRjaZZEtojLbiHosmK3mBkMB+h0OnZPk/QHQxrtDoJCtjIsVesszYQpVuvMBH2szk5xf/+UdKGCIMjTqiRBsVJnZTaMzWzEaTHRHw45OP9eQoTVqKfbHzAT8rEyG+HuXpxas0Oz3UWlUtIfDJGA166vkipUOEnlGYxGDIcjhiORcr3Fp7avoNdpOTiXMdRao4UoSWSKFV6+soDDbKA7GGAyGLi/c8RwNKJcb+J12rCYDHidNuanAjzal5dqRqOBckWm+XS6fa4sRpkKeClXqoS8bu493iWWSDM3FeI8k6XT7TEbDmC3yOGQSoUChSCQzBbI5IuYjQbOUhmSmRyf2L6Gx+VAr9MxEwlwcpbkPCX/PcrVOr3+AItJz9XlOdRKBY92D3CatBzlmigEJR6/n/WVJWI1OCt3afdGrIUcBF1WYuUulS4ETQIRl5mBJLCTrrMWtBF2yObjZ+U2ncGIl2dd3ImV6Q9Frkcd3ItXMGhUrAYsxIstKu0BYYuS84r8OmyEbcRKbdqDEVfDDp4kKiQrbV5f8vE0XZcTlm1qjgptTFoVw5EEAiz6LOykqwxFiRtRF/fj8pLOatAwHEmE7DqO802GIlyPOnmcqKBUgE2v4ajQYtmjI1Vu0xlKzHotpCptoi4z+5kaEhCwatnPNTnI1HhwXmYtaMOkk/0MstksFovlPW0bL5rmu5dnAH96VOQX/02MfFeJThjwsaiFH1r28+4yGo3odLr3DLTMZDIEg0F0Ot0LsmFRFPniF7/IG2+8wdzc3PcTXvjoNV348AyGRCJBKBSaLNgupmRRFAn4/awuzfO//dbvsTg7hdlo4Ch2jkql5DieYDoU4PgsgUGr4fr6Kn63U8Y0gz4CXhdqlQqLUYfXYadaq6NSKihWahQqDQYjiXKtSbFSYzEapjTO97qxtkAyV0IQBDYWZjAZ9OzHUuRLVdRjV616q8P1lTnShTLTAQ8hn5t7+zHK9RaFWhOPzUSr20eUJF5eX8BmNrF7miJbqmEzG2h3+/LvWp0j5HFSqrdJ5ssoFQLd/oBWp8f22jw+lw2NRk0sXaDe6tDtD6g2Wry0voDVaCDsc5EuVskWq1QbbbKlKttXFuj1+izPRrCaTBzEzjnP5EnmisyG/ZSqdRQKgY9trWE26MgWiqiUSg6P4+SKZSr1BmG/F5NBj0ohEPG56PX6xJMZZiIhHuwcUihXCXjdSEi4nTacdhszUyHa3S5H8QQuh427j/eIJzPc3LyCRqPB53ET8Hro94fEkhnSuSLuccab1+NmIRqhH9oi0dVwXumyOWXHazNhMhk5KckwQaHeYz1sp9YHpdjnvNpnJWCl2RdpD+Sl4oLXTLXdZz/b4ErIxrTTxJ1YSYZdLCqepuvMOHT4bQZi5R7dociCz8JuusZq0IbXoudJssJIlKXC3z3O4zRquTbl4GGyjlKAaZdsnqNRKuiNZNcxm0HDbrKKKMGNGRePziu0+wNcFh02gxalNJrgvNenXeykq2iUAiJKOgORFbeGx5kmCkHAYdJSbvXZCNvZyzZQKQSGoyH3z6sc5urspmtMO3R0mzVWVlbodruXOpjBi00z0+jzv/zhHv/yfhqzSiTituB3mPhhXx9JejGbDb7n23uBJT87SJ2dnREOhychlvv7+5PmnE6n+c53vsNP/uRP/iW7yZ+7PhrJEc/Wh6WGXKQv3Lt3j16vh8vlIhKJPBdx8h+96uRn/9v/kt/8/a8xEwqyOBfFbjHxx392mwc7+7hsFs5SWWxWC4/25CXN9sYKd57Iy67V2Sl2YjJkcHPzCoVKnf5gwMJUgFtV2SHMqP+eyqZab/LK1WXOMnm++c5DpoIy9NFod7i5scyt8RJNQmJzeYYH+3HimSLTfhfxbAkkCbfNDIJAxO/lrYcHeJ0yZt3p9bkyH6HR7nJtKcpJuoBSEKi35CXa9uosD/djXFuKkipWkUSRxBgHvr4yw5PDOBsL0xRrTfr9wQQK2V6d48HeMbNBN612F71Oy9vj5IibGyu8df8JfreDoM+DTqPi8f4J/7ZY5urSLJ1uj5PzFB+/vj5Jla03mtQaLc5TGdQqFYszU5SqdTL5Iv/xJ1+m1mxTLFeJRkI83D0klsrhdzsRJQmjQY9SpeJTr75MsVrnyXGC9cVZ3ronx86vzkexWsw43S46/SGrVxw8PIjDaZarq22Cix9DbzBwVGiz6NXz6LSIy6TBoNOyPevm1om8bFvwmFj3dtnNNRmKEjNuEx6rnu5gRLU94FrExnG+iSSJzNmVjAQVu/kuKoWAwWBkKI5QKwWuRpwTFZsEiJKEXqNk2S/bPILsIvb2cZ7NKVlC/DhZRasSsBnVnOQbDIYiM24LI0liLWTn7vjnrk07uXNaRKsS2Jp2kTsuEnHoeHAmv6ZzLj27uTYWvZqzhsiiU4PZbOJuXM5yS1Xl98W1KSd34iWcegX3z8rcOiny9nEehxZ+yphjOxqcpEisr6+/MI3abHbaBh+f/81b7NcURF0m1AqBSlfEKor85M0plr2ykc5gMHghHQLkqXl1dZWdnZ2Jb68kSRMLR2DSbB8/fszq6ioPHjzg2rVrH6oXgExf+4mf+AlyuRyCIPDTP/3TfP7zn6dcLvOjP/qjxONxpqen+d3f/V3sdjuSJPH5z3+er3/96xgMBr761a+yubkJgCAIPwn8j+ND/5IkSf8CfoDZCyB7JFz2/N4dt6NQKPD7/e+b8lCsVPkvPvsGTpuZt+49RqlUsLW2yGAwRKfR8p07srH2dMhHPJXDoNehUqtpNNu47FaqzTbDkYjHaafabDMYjjAbDQgK2VDc7bCxMjdNud5g5zjO9bUl7jyVG/j1tQXujvFbq9mI3+VAqRDYi6VYmg6wdybfOq/MhNmNJfE6rEwFPBTKNbkJA9eWojzYj6FRqbi2PEO3P+TRmKFwbXGaB/sxtBo1VxenGY5G3NuPy8eMBtk7TWC3GFmcCjIajbg9ZljMhX3EEhl8LhthnxskkVvjRjvlc5LOFnHZzUwHvSgVAn96+yEAG4szPNo7RK1UcGUhilat5Dh2TnbchC9MzVfmoojiCIfNymAkm48/OZD/Di9dXeWdhzuoVCpee2mTZqdLs9VGEBSk8iWq9SYmo56gx8XpeEKeDvko1FqcpnIE3A4S2QLNdheP087ayjI9pYnjfB2f00rFEKY/gmWfCYtOxVunZYYiKAWBV+ftZCodDnMyzr3kUKLTaXmYbiJJELJo8BgE7mdkv4qNoIVYscWiz0Ky3MKoVXOcb6BRCmxNO0hW2pyXmmxHXdweN8tX590kym3Oik22o05uj1kV16NOBAQenZcIWZScVgYYNErcZj1nxSYvzbmJ5Rvk6102wg4ejf0hrkdd3I0V2YzYSZebZJtDlvxWDsYQwtUpBw/Py3jMWrSCiKhQ47cbuBsr4bfpKbf69IYiiz4TB7kWV8M2HiZquI0qGn0JjVLB1Sknbj1oRx1mpkKgUFJp9TkutEhXOxzkWqwHzRzlm4wEBYtuI61ul/9kI8J//+o0IN+dHhwcvC/lrNvt8uTJE2ZmZtDr9ZycnLzg29Bqtfj1X/91isUir7/+Oj/yIz9y6XX97spkMmQyGTY3N2k0GmxtbfEHf/AHfPWrX8XhcPDGG2/wK7/yK1QqFb7whS/w9a9/nS9/+ct8/etf55133uHzn/8877zzDoIgOIG7wHXkPnoP2JIkqfID3XQHg8EEYuh0OuRyOXI5mXZ1YX5zEfD4fikSF/Vvvv02f+d/+BVubq7xcGef6aCPu4930Wk1LE6HEBRKTAYDd57s0esPeGVrnVtjc5erK/M83D8F4ObmGslcCa/Ljtth4+gsw2kizfW1Re6OqWRhn5t0Uc4DUygEgl43Bp2Gfn+AxWTk8clFhpeLdEH2tXXbLWwsRfnO/T36wxErMyF2T2X6mEqp4OObK+yfZcmUqixPB9kbT986jZqPX1viweE5pVpTbpiFMv3hiJDHwepMiDfv79MfDHFaTYwGfWqtNhvz0zhtZv74HXmCNBl0WPVqao0WU343Rp1mMu2ajXrsRi3lWp3F6SAGjZp3Hjym0+vjslsQxxh2NBxgfipEoVzlKJ5kIRrm0d4RI1H+wLJbzZhMZnQ6HXqdlu/efzo2TF/h7Ue7IEmsL82Ok201NNpdJEFg5zgu/+2vLrNzdM7MdAiHzUq1M+RpLC0bAl1Z4SjfYiHiQ6vTU8TEeVXme78UdYCg4KTYptjss+o3MRqO0GmUPE7WMKvBppHQqBQcV4aIEtycsdPpjcY2jbA1ZWcoSsQLTYxaFRqVQLzYwmFQsx628639LAoBNqfk1Ae9WsHNORff3JU/VG9EXePJV+KTSz4enpVodAbMe0wc5JqYtCrsRg0KhWwJGSs0aPWGXJtyTibba1MOam2ZKdIbQaU9ZD1i5/H4HJcDNvbSNSIWJS6riUepOgt+K3vpGushO49TVYwaBQqg0ZdY9pnYz7W4EXVyJ15hc8rB/fMK8w4VR5URN6Yc3D2rshqwUGz1qXaGLPlMtFsttBoNdoOKf/LjW+jU35uMPwzlrN/v8+TJEywWCyqV6tJr9/j4mE9/+tP88i//Mj/1Uz/1vtf2e9VnPvMZPve5z/G5z32ON998E7/fTyaT4bXXXuPg4IDPfvazvPbaa/z4j/84AIuLi7z55psEAoH/CnhNkqTPAgiC8BXgTUmS/u8f6KbbaDRIJBLk83lUKtUkbufdlJF6vU48Hmd9ff0Dj/kPv/R/8bVv/hm9bgebxUS31+MonuTG+gp3Hsl+CetLcxTLVWxWM2azif5giEqlpN5oUWs00Wg05Eo1BsMRVrOJEQLNdgelUkHI5+V8bAh+bXmOWCpPyG1Do9Xw4FCmn1mMegSlasK5/cTWGr3hkIcHcXmCy5UmMTubSzNy4GWtjcGo5zxTnHzv5tocEgLHqQIqpYJWuztxJ/uhrRXq7Q73D8/RqtV4bEbOsyXMBh0vX5nn6fE5mbIcrbI+E+DRYZyV2TAOq4Un+yeT2KCNGT/H52mWo2FG4oiT0xiVsV/u9dU59o5OWYyGMRp0nCUzxJMZVEolVxbneLB7SCjgY21xjmqzTSpfmvglZ8exQ5urC/QGQ0wmE3qdlgf7p1TqTSI+F41Wh2qjxdxUAL/HTX8kUqg08bls3BqLSKb9bmwOB0aDkXpHzue6k5CZILN+O5FwiHxL5CjfZMphQBQUuEw6mr0h9U4PaTikPxIJWrWclrrMOLWcVfss+Sw8SFTwmrU49CpECXbSMnvg5qyTaqvPXqZGyD5mOpRavBR10h2MeJSooBDkBnkvXmI76kQC7oyn3RtRJ3diRfxWHVG3mbeOCigFWAxY2U1VMetUBO1GRqJEbzii2OjR7g/ZnHZO8tquTzvJ11qUWz1Uajm77cLtTK0U8Fr0JCttXorayTeH5OodjDo1hUaP69NO7sbLTFuVnNVFfBYdlc4QjVJAqVIyHImolAoQRXojBXNeE0/TDa6ErPSGImatilStg44Bn33Jy392c/XSa+3s7Ixarcbq6uqlPN3hcMjt27dxOp0sLi6+8H1Jktje3sbpdPJzP/dz/NiP/dgHXt/PVjwe5xOf+ARPnz6d8Ikvjmu326lWq3z605/mjTfe4NVXXwXgU5/6FF/4whe4cePGPwB0kiT9EoAgCP8T0JEk6X/9vrr6fr9rOByi0+nY2trixo0bRCKRSzl6RqORVqv1nsdptVrEYjHefvtt/tbWElaLhdmZafZOk4iSgle2NihWqiyN02dlz9Yiu0cxlILAg50D7jzaxTGOxklk8myuLgBQazRZn58GYDQSsZn1GPValqYCjIYDur0+O7E0Dw/OmAvLm916q8PKTIjpgIfttXn240meHifoDYbE0nmur8yiVCi4vjLHQJQ4zpTJVRvEUnlurMyg06h5+co8mXKTo2Se/5+9Nw22LC3rPX9r7TXseZ7OPsM+83xOZlZmZU0UgtgXGbRpFaNFEQOM7kC9ajC0U0BgBDbgLTrwwuV6bRppW+WCXuhuh1sKjUVRVVnknGfOM8/77Hme19Af1slDDVma2v0JfL5k5F5rD7HPfp/1rv/zH/LlGulChenhXiYHE5ybGOLZhS3qbQ3ThFanSzjg5/FzExiizDdvrjPYZ30Wr8uBx+fn/Mw4K3tpnlvYYCjZhyxLnJscooONRCzMtZVNbq7tEI330BcP88jcOK1Wi+mRJNcXVvj2izdx2u30xmNcPD+H3ePjiccf4bhY5+9fvAOijVS2YJnVjI/yhiceoS+Z5M5OCtXp4sriOt+6tsjs2CDnp0YJ+L0M9CUYHhpiM1Xiuys7dDWDdKFMtdnmRx49z/mZCXINjaNsiVylwfpRlkKpzA+NhZnoj7KdrXNlcROn0GUi7iHkVui02+TLFTaydeySSCLkJhnxspyxGAiGoTMcVLl1UEQWBSsqvdhElkSiXpXZhJcrmzk2M1XeOBkjV2uzn6/T63eSKjdpawZxn53pXh83dvOIAuimSbOj41Kls4YL0Be0JMIzvX5GQgorRyVsAgyE3KylyuRrLfqCLhodjWTIxcqR1TQuDYW5vlvguNRmyIWQ+XwAACAASURBVG813B6fg5XTi8L5AQvyCLhklo7K7OZqPDoSwTBhJOrm5l4BVRKonoZRB10Kbc1gvMdHqdFlsse6g+gPutF0g0y1zUyPh/2CxbpAEBgMubiUcBCXGqRSqfuuu2QySTgcZmFhAU3TXnVckiScTietVoudnZ1XQYnpdJqenh6efvppGo3Ga67v+1WtVuMnf/In+cxnPvOqwd69EMx/aX1f73T/KTnwS+uFF17gscceQxCEs1DKk5MTcrkciqIQjUbPDJ1T2Twf/MTnwTTI5gq4XXZeuLHA+alxnHaFQqmC1+3i6p1lVEUmGPCTyuYJ+X20uhqNZgu/1027a9Bqdwj6PISDfmRZotXuINgktg6sW8rHzs/w4uI6AHNjgyzvHDI/NoSJSb5S5+iUg/vYuUmuLG4gSzYuz45TqNZZ27V+zI/Oj/Hi4iaqLDGdjNPUhTNK2YXxJLfu7jI73Icp2lBkG7dPo8ljQS9hnwtVtXNn65iLE/1cXbYw1bH+HpI9IZ5f3KbV6dIfDVAsFgn43IT9fnS9ewan2GWJgaADn8dFudZAkUQWbt+m2+2iKjKPXLyAIQhky3UcqsrGzh6tdge7XeXC1BiCaKOtm9gVhatL6+i6Tizkx2mXURWFoM+Hy2FnaeuAk3yJCxNDLG/v09V1JgbihPx+NFMgV64RDXh5cdn6XPOj/XR1Ab/PTburodgdXN+0vpf54QSKJ4DNJrGdKdMbcHK3quBzSIxGPThVhe9sW7fkUY/CTI+bazsFam0NSYALCSfZhsFOro4kCjyUDCBgcn0nj88u0xdysnBQ5NJgEN0wuZsqU29r9PgchD0y1ZalYpuIe09v/U1eNxZjM1PhpNy08N/Tne/l4TC6YXBjN89sj4elVBVRgOneAEuHRR4djXCYr3NYbJAMuUiVmnR0k8mIylq2zUzcSaOjs1PsMBr1sJOzLD3PDQS5c1CkzytxXNNRJZGLyTBb2Rp9QSfXdwvMJLwsp2okgw4OSi36g04Oiy0m4h5WUzUeGvCxdFThfL8X0SaTq3cQBJiMe3h7vM7lixdYWVkhGAy+irZ5rzKZDPv7+8zPz7+K/nn16lUuXbrE+vo6oii+LOb96aef5sUXX+TTn/70A/WAe9Xtdnn729/Om9/8Zj7wgQ8A34MN/hVeeIB6pRz4terGjRv09vaeeXK6XC6i0ejL/Bjge1e55Y0dPvbZ/510Jocq29B1jcW7mzx6fpYXby0SDVl4rcNuJ+j3UGtYt+1ej5tytUatVkdVJA5O8mSLFR6enzqTp86ND7O0ZUEJfq8bAxG308FgbwwEgSsLVhO+MDViTd0Bn9vJ+alR7u6nSOfLPDwzyrUVq7l4XQ4uTo+wsHlIodpgJBFiO1XANE3mRwcIB7z8wy3rNX0uB6okEgt6MW0yks3GwubBqXuZyBsfmiRVrLG6n8HjUPE7JdKFCpODvZiCwOreCZp2Cl9M9aMZAi1B4SBXxl494uDoGFVReP3rHqdaKrBxlKPebDHVF+Lm0hrxaJi5yXHqjSZ399M02h1mBuPcXN0i4HXz0PQozVaHfKVOqdrA67SzcU9ufGGSRquDIkuYCOwdZzgpVHDZFZKJCJlilf5YiKDPw0mhyk4qRzTgpWsIZMo1Rnuj9PdESJdbbKbyeB0KijtAF4mhuA+H3c5yTqPWNqyB2niEUqvL0lEV3TR5qM+HbIOtTI1crYNfFZk65eQel5sImLx+PMJ6qkKq3MSjSozGPDQ6Gqlig4GQi71cjUqrS8LvYDji5rn1DJIIc31Bbp3Grs/3B/n22qlh+nCYq9sWHPWm6TjfWjnB5Hv4rwBMJ3yYusZBsYEqSeQaGsMRNweFBl3d4NJQiKNCDREDRJmjUpPzA0FuHxRRbAJRn5PDYoP5hJvF4wYDQSdO1QbdFja7i9VUlbjbxnFNZyzmYTffIOFz4LFLOFQZAZONdIWuKdLrdxJwSvz6m0ZoHW/w8MMPv8pH4Z/ya7jHte10OiwvL3PhwoX7pgR/6lOfYnp6mne9610P1APA2qi95z3vIRgM8pnPfObs8Q9/+MOEQqGzQVqhUOD3f//3+Zu/+Rs+97nPnQ3SfvVXf5WrV6/eG6TdAB46fYmbWIO0wvd9033pMO2VZRjGmcHyyckJbrebgYEBAoHAfRvtK+vG8jq/9x//FL3bpViuIAqWn8D69i6ZfJHHL87xwnVryDQ5Msja1i6KLON2OymUq9hVBafTSbFcQ5YkEvEY+yeWh8JDMxOc5Eske2O4HA6+dXURE5O+WJhsqU7n9HbrsfNTCILI8s4hA7EIyztHZ5/v0qk72cpuirDfy0GmQFfTEQR4dGqQbKPL1lEOhyoT8bk5zBY5Pz6EqqrcXN8/M7N5bCaJgY2DQp1MqcZkIsDSTop4yEcs5CdbbnBSOZ3UD8boagYuf5jVkyqzPS6+u7yFItmYHEygiCYbJYN6W2M24WHhxWcZGeglEAwh2+DbNyxcfLQ3QrNaIRLyo6oqdkXimdNjU4MJMrk8kaCfoM+DKkvc2bCGgJenh7m+so3TLnNu3KId5YoV8tUGyZ4oN9asRInLM8M02xpuh4Nmp4uOwPKeNWSdHoig2xz4vS4qjQ52j4/lVA1BEHhkNI7i9LCatsQN4zE3IOB1yKydVAk4ZXRNJ+JRyJZqZGoac/0+6m0NTdPZytZI+B30+x1sZatkq21km8DloSAH+Qb7hTpjMQ+FWptCrc0jwxEqrc4pNGCJHxYOCkwmAiiSyLXThnuPnXBuIIjeabF0Yt1O39vNCsBjo2HWUjU0XcdplzkpNZns8bGRqaIbJvMJN+1Oh3xLoGOYVJpdK8p9t0BfwEmm3EIzYTjiYStbYypqZzXb5vJQkHSljV/WqOkS8YCTqztFxmJeKi2NTLXDeMyF2WnhdKi8ea6P/3Ym+DLWwT0fBeA149fv+TXcS5AoFArk83nGxsbOznlpzPu73/1unnrqqfvivfer9773vXz961+nVCoxNzeHKIrs7e0RCARwOp1sbW1hGAZPPvkkTz31FI899hjj4+McHR3R7XYZGBjgj//4jy0DpkuXloAooAI54PdM0/xj+D6HF8DCdXVdP/v/PZf6dDpNuVw+i+vpdrvkcrmzqyQ8GNf39uoGn/vT/4vN3X16IkH+n+evcWFmHEwdRZIolcts7BwSDwdJ5QoYhsHF+SlunMbUzI0Ps7S5jyiKPHFxjramYxNF6s0W63sp2t0uks1Gf2/PWcjk4xdmqLc62EQbmUKZQs0SLQA8MjfO/kmewV7LjyFfaVJrWrv9x+bH6OoG+UqTo2yJRNjLXqaELNl44twEx4Uam8enw5rxfnZSecaSvaweFxmL+7i+foggwHhvBKdDZfHIcsBKRrygd+npiXNY0Yn7HNzeObFi4fsi9IW93Ey1qLQ03IqAnzoeu4wqiXQ1ndWNTRqtLpJN5LGxOO12m0KtRbur027WSOVKeBwqlyaTNFttitUmXV2nVm+QLpRRZBuXpwZP/YRBFAWWtw6pNdsEPC7iIS/1RhOf20E0FGDjMMNBpshwT5hirUmj3aU/4iUWClBqamyn8gz1hEnXLUXeeG+EYMDHYrpFodbG71QYTMRQ7CrVlkapqeFSbJxUWswkvJQabWQBVlMVej0Sdlkg4HFyYzdPzGsn4lbZzlYZCLpoaTpdTWc/X8et2rg4GOb5jTSabtIbcCIAPX4Hi/sFpnr9ZyyEh4ctg5lr2zkuDoa4uWfxfKdiLmqtNvmGTr9P4W7O+ttfHo5wdTtL1GtnNOrjhc0MfqdiiXVqluDjHoNhNqqS64h4HQqbmSogMBLxsJmpMR21s5JtMxi0s19qE3Kr1DsGdtlGRzdw2kyKbZjr83HroMJ4zINDsVFpdvDaZXxim994UxKnw061WmV4ePhsLZmmyc7ODs1m82Xr8KVVr9dZXl5mcnKSUskSC/X0vFzFdnx8zEc+8hHW19e5efPmAwdSPvvss7jdbn7+53+epaWlVx3/4Ac/iM/n46Mf/Si7u7u8/e1vv+95ly9f5tq1a48B3wX+Fvj3pmn+13vHv++brq7rtFqtVzmMRSKRVwHk/xQ/8LVq5/CET3/pL1hc3SAW8JEtFMDQWN7cY7AvTiqdIxYOMT7UT6lcQRRteD1OipUa7U4HWbSxuLFDV9O5OD/NzRULZnj8oXmunOZ7TY0k0REJ+z3sHWeQVTv7KatBPnZukheXt5gc6sXrcnJcqHCcPR2aTA2zvHPMufEk+9kyEb+PxVMaWSLkIRryc1LpkinVOD+S4PbWAQOxMLFoBEkUeHHNgjkcio3pvggnLYGTcoug245TMvG63djdHuodk0ypRqXZJeZzMpOMsJlrcVS2Fv2lAR+NtoYimuxmy3iENtvZGk7FxsWhMO1GjZWDLOV6m0dGY1xf3masL0LQ60Tvdvju6o6l0JroZ237kGRPGJ/LARjcWNuj0e7w6PQQLy5v0R/xM9IbQ9etwVkqX2asP8rNu3sIwMXxfmrNFjbRRscwMQWRrdOLzRNzo5SbXTxOO62ORrUrsJO1BCxPzg2jyx4aXZ2tTIW5oTg3j1uMRl34HQqmaXBj/zTOPe4m5pL5h7vW7tmtCFxMhri1X6DStLi1MwmL3H9tJ0fYrRLzWtFA5wZCaLrBZrpCva3hc8rM9Vl+Cq2uzsPD38Nz3zAe5TsbGQwThoMWc0IzTB4dCbOTrpCpdbiQDHJrz8L+Lw9HWDht4G3NYOW4TMxrp9nRqbS+t7N1SQJzySC3D8rM9VmRQr0BB7laB103CTptZBo6M71+lo8rzPf7WTwqMxb1kCpZfOmxuJetbJ2pHg/FRpe4185v/+gYxaNtut0u8Xj8VQ0TXr5bvR9r4R5P995avV/Y5Be/+EU+/vGPc+fOHRKJxAOv5ddqpqZpMjAwwLe+9S3GxsZe87xUKsUb3/hG1tbWBABBEH6Gl2C78APQdCuVCjdu3CASiRCJRF6WwXSvsd771zRNy/VIVRkZGXmg17+XNrGxvcNn/+yvOMoWKFeqNFsdZseSpDI5Al43z1+/g6ooxMIB9o9O6ImGKVctw5uB3jiprHXrHw0FaGkG1XqDkN/L5OgQhmmyd3TCYF+CFxethjwx1M/mYRanQ2V2NImiqDx3ivVODfWyfpAh6HUzlkwgSDJXlq3bar/bSgYIBwOsHuaIeOzsZsrohsnUUC+90RD/sLSHaQKmyVyfH9nlZafYpqsZ9AccHBRqzA310tBFys02R8Umkk3gsdEYLUPg1qFljD3X66V12jS2MjVGIy6ubWdwKTaSPgnV7HDnsERHM+jxO3GLXTwOha5uoNhEbq5ZF6Kgx8Fkb5CuppGvNHAqMtuHKarNNiGvi8n+CLquU291sMsydzb2aHc1wj438aAXUQDBNBAxWDvM0exojPfHyJUtXH0gFsLttLOfKbKTyjE/2s/qQR5REJgejOPzednN1thNF5lOxkh37YR9LiJeB7Ki8OJBAxMBt2LjUtLHbrbObt5iwzw66EczdBYPirQ0g+Gwk7BbZTNdJV9rAyZvmopzbTtHpdVFsQmcGwgC1i52KOKm2dE4KTeZTPjw2hW+ewopjIcUNnJtZhJeBJuNuycVOprBeMzLfqGOQ7YxGFBYTtXpGibnk0Hu7FuOZJdHIpjA4n6BvpCLzXSV4YiHg6KF8871+lg8rjLT48FlV1g+LJEIutjM1Lg0FOT6btHKZSvqzPf7WDiscCkZ4MZ+iXP9fvayVQIOmaDPhSAI2GWRdz3cx+vHwmc+t16vl+np6ftucO6JFObm5pBP/apfWp1OhxdeeIGpqan7mlV94xvf4M///M/Z2triL/7iLxgdHX2g9fxazfTZZ5/lAx/4ANevXz87b2ZmhvHxcbxeLx//+Md58sknuX79Or/5m7/JN7/5zXtN90ngN0zTfPu91/q+b7rPPPMMOzs7vPOd7wRe3WhfWaZpsry8jMvlek2xhGmaFItFMpnMWaxzNBrF7/fzv3zp6zx3cwGHKlOvN1jbPMUQ5yZotts47CrpTI5mq02yN8769r6VCpHs5ziTRZElIqEgG3tH7B2nGR/sZ/MojWGYOO0qoVCYdKHE9GiSeCjId+7cpdXuEgv6aZtQrjUZT/Yw1BvnmTtbdHUDVZboi4XpGiaJWIRyo8NBtkSz3cUmClwa7ydd1zkoWrjsdNxNXRMIRyKspSqMxTws7OfoDXkYiIVpdA2Wjix60VjMS8zvZPWkTqHRpc/vQJEFQi6Fk3Ibh2LjpFSno5lMxNx4VJHrW2kaHQ0BmI/KyLJMvtoiV20Sd0msHmQYjvnpD3soVyos7qbRdYNLoz2s7B4z3BPEY1epNxrc3jy0+JiTA9zZ2GeoJ0zE76bWaLB5mKHZ6pCM+Vk/zOF1Obg0laRQrFBvtTAQ0XSDvZMCoijw2Owo9XYXuyKh6wb72SqZcg3JJvLw9CgtU8Qu26g2OzSUAKlKF8km8MRkgqZhhUq2ugYX+30Uak0CDpmloxKTcYvCNRRQKdRbmKINuyRhE0C2CayfVLiQDFFvd2i2NQ4KVsN+01QPL2xlaHZ0/A4Zn12k0dbompAMubh9YP0NZvsCiKLAZrpKzGcnV21TbXVJhlw0Oxohp0S12SHfNGl1T31z9y0o4fWTMVaPyjQ7Gl6nwvHZEM3yZfDbRbINg0eHw2iGiSDArf0SLllAM0XARFFkFEm0jNEjbgzAIUuUa3WqHZOg18GPTIT5H578HpRw7do1fD4fmqa9pgAim82yt7d3X9aCYRhcv34dWZaJRqP09va+7PhTTz3F6Ogo8/PzyLLM9PT0fdfyK+u1mu773/9+RkdH+eAHPwhYA/parUYoFOLGjRu84x3vYHl5mfX19X9tutVqlbe85S380i/9Eu94xzse6DmGYbC0tITP5yOZTJ49VigUyGQylMtlfD4f0WiUYDD4qh/MF/7L03z5b5+hUqkRD3kRDINcoUixXCFfKvP4hVmev2EZdJ+fGuP2shWkNzmcZOW0ST80O8WtUx+Hxy+dY33vmOH+HhyqwuLWEaVKDclmY3x0iLXdY7wuB4+cm2Q3XWbrOGuZ5UwMsbB1xNzYIE6Xi+1UkXzVaqwXx/oQJJnDcodcrcNE1M56usbcSB+GZMch27ixY+2o5pNRQj4Xz27kME1wyjbODfipdWElVcWtSsS9KopkQxQFMtU2qiSyl68zFfPgdViNdzdnDXceGQogGBqH+RoHhTpTETvbmQqjcR922YYkGDy/tAvAYMRLwG5DkiBXbhDyOLi2uo2uGwzGg/T4nei6Tq5cx+dUuLWxj2GYxPwuIj4XTruKYRg47SrfvmVBNdODCY5zRTwOhYF4GFWRubt3wlG2yCMzI1y/u4+qSJwb7cOu2kkXq2wdZrk4Pcy13TwuVWF2MIo7GGMh3aHS6jIS9dAyZXp8KpVmF0US2DqpnO4avQjobKarlJtd/HaR0ZiPWktjLWX56s72+Wl2NLYyFWSbyFDEw+29PJNRF/V2h1rHpNjUkER4eCTCQb7BYaHO+YEgy0clurrBw0NhTiotDgp14j4HumElCif8Dnq8Kjf2ywxH3ByXW7S6+plYwmOXuDgU4Zm1ExJ+B+WWTr2tcfFUXZZw20g3TWSbQNDtoN7u0ucCh8uDhEGp3iTo99LqmuwXGiTDbrbzdSRBpM8r4pHhMz/7COqp6sw0Ta5du8bly5fZ3d39R43KC4UCm5ubzM3Nvcwh7J7waWJiguXlZbxe78v8Gt797nfze7/3e8zM3F948Vp1v6araRq9vb3cuHGDvr6++z7vDW94A0899RS9vb3/Ci8AFItF3vrWt/LhD3+YH/3RH32g5xiGwZ07d1BVa9FWq1WCweDZjvafwnxXtvb5tU/+J8rVOv1RP1duLnJucgS7LKFpGoJgsrG9D5jYBIF0rkA8EgJMREEgGgri9XlotzucZPOWw9LGLgCPXzzHi0ub2FWFSzOjIKlcX92m09V47MI0313dx+9xMzs+SNu0cWvTolSN9YZpayaBgI/tYoehoJOV4zJOVWZupA9d17l1bKnF7LKNx8d72Mq3OCg2kUSBc31eBFHiuNwmV+sw1ePmsNhiOOLipNIi4FBYOK4Q96gkgw5M0+DqjoUlDkdc9HoV9vM1dnN1ev0OFEHH65BoNltomka61KDS7BDzOZhK+MgWyqwfF5Alkf6Ak4NMgeF4EK9D5jiTZ/0wgyrbGI54OciU6A25CXpdVJst1vZOUGWJZCzI0tYh/dEgYwNR6vUm+UoNXTeoNZpkSjVkycbDU8O0T+NuRFFgcfuIWrON1+VgoCdGVzcIuh0oisSt/RKNdhdVljg3P4vNFcBApNTs0tVNUuUWEbfCZNTJXq7K3mmi8EyvD59d4up2lq5uotoEHh2NsnxUIFe1sO9Hh4Ls5qqkKh3A5HyfxTHeylZRJBsJv4PV4xJ+p8L8QIjn7p6cihY8ZKstPHYZr0Oh1OxwUmoSdCrYVZnjYoOLSR/bmTrFls543MNurk5HM6wh26n/bkszWToqcX4gwJ2DEg5ZtKJ+Km3Lk/e4xsVTGOF8v587hxXmEy4WUg3mEl6ytQ6V0x2vx25DsYm895wLqds4U5a1Wi3u3r3LuXPnADg6OiKTyTA3N3ff4NdXshbAgh80TaO/vx/DMFhbW0NRlDNY8IknnuD27dv3beT/WN2v6T799NN84hOf4Nvf/vbZY9lslmAwiM1mY3t7myeffJLFxUWCweD9BmmfNU3zb+899wei6YL1Jb31rW/lYx/7GG984xtf87x7LIZMJkOj0UDXdeLxOCMjI/9sFYphGHzo3/1v/P2V26iqhN+pEvI6+fbV23icDoI+F7uHJ0yNJDk4SlFvtjg3NcrtlXVMw2A02cvuYQpN14kEAwg2Gafdihj3eDw8d3OZVrvD9Ogg21nLbGV2LEk0GuM7q4cWRuz3INgkAgE/KC5ssqXJ13SDRMjLzFAv13eLVFsWBW2+x44hyOzXTGptjYsDfjKVFhGfk7WTGlNxN9f3S0zFPSg2EVUWubpbQhYFZnu9eFXb2Y7Yo9q4OODjpNJi7aSCLIrMJ9x0dQMTk8NCg5hbYvmgQK9fIeyQEESRm9vW8Ol8MkSjUcPnsFOoNvA5ZK6uWncCozEvNsNicBRqLQaifl48lfZODcRRZRFVtlFrtvDYVV44xcLPjQ1wnCkQC3rxu510Om1Wd4+p1Fs8Nj/OlaVNVEXi8vQwpilQqdU5TOcZ7Ovh1oY1VHxsbhRRcVJrttg4yPDQQxe4U3HgVETm+wKIps6VTWu41et3EHTYkERYOCgQcFr0N6cE5XqTTE1jts/HYaGOX4GtQoe+gANVkXEoNpYOLRjg0ZEI6UqLnWwVAbg0HGHlqEh/yI0A7Ofr1NsaUa+dgEtF001y1SYhj4OdbA2vXcLvVpEFk1a7S0MXKTY6zPb5WTmunMX6rJ9UmB8IsHJcodTonHkp3BNB9HgVik0duwQGkmV3We8wFnGwlGowFnXhcyo4FBvtrs6/fcMIFwb8HB8fk06nmZubo1KpUCgUXoazptNpDg8Pz+CAV9ZLWQter5f19XUikchZ4otpmmxubqJpGpFIhHe/+90899xzD7RO3/ve9/LXf/3XtNttnE4nuVwOh8OBKIoMDg6yv7/Pu971Lj73uc8B8IlPfII/+IM/oFgs0tfXh8/n43d/93eRZZlf+7Vfo16vc3R0lAbqwH8F/q35kkb7A9N0AU5OTnjb297GJz/5SZ544omzxzudDplMhkwmQ7fbPUs2dblcGIbB7du3SSQS9520Pkg9c/UOH/n8l8mVKrTbbRIhP267gs/toFqrUa5W6YmEWFhZx8Tk/OQou4cpbKJAbzyCphs0Wi1AYHVji3ani11VSSaT7B9nmBzuIxoMcGsvT6nWQJElhoeGKHWgJ9GHrrjIVpqUGx1sosDrZwYpdWAxVcU04eFkgFqrg6KqLB/XmAzLrOVazCT8dAwTjypxba+EV7UxHnejSiIvbBUwEej12RmLulg4LFFoWLS1HxoLUW9pLB9XrPiXAT/1dgeHYuNuqsJ0wsv1nRyDIRdht4IswnOrFqMi6LQxEffSbHXYOikS8jgolcvUG236Ag5cksFxvspJqU7Q4yToUshXaiSjfvxOlb3jNNupLCGvG5ddZi+VYzgRZjAeolStk86XcKgKJ/kS5VoDl0NlpCdCp9u2mBiqzJU7d+loOv1xCwcXTOiPBfC6XSxtWqq30f4eypq1KxuOeQlG4txoRWhrBi7VxqBfQhFMSjXre3coEoenwZOapp0mSDRQRRgJq9hVOzf3LS7uxaEI5XqLakcnXW5weSjCzb08fUEXmm7idylnzfjSYBjNNLm9V6DH78A04aTcJOxRmewJ8PxGBrsk0h92s5Gu4LVL9PgdNBotTJtCsalRb2un0uA8qiTSG7CkwzO9Pl7YyuN1yDS7Bq2OTshlI13XGfSrHFY0+oOWmq3W0ZmMOmk2mhQ1G0G3yn9/qY//7vz3mAOZTIaDgwNCoRCKoryKVZDP59ne3mZ+fh5VVXllNZtNlpaWGBkZYXd391VDNtM0eeaZZ/jUpz7FuXPn+PznP/9A6/N+VLGPfexjuN1uPvShD73s3JWVFX7mZ36Gq1evcnx8zI/8yI+8jF/8jW98g76+PlRVXQB+xjTNlVe+3w9U0wXLL/PHfuzH+J3f+R0WFxd5wxvegM1mO2u0TqfzVc/RdZ1bt27R399/30npg5RhGPz2H/wfPP3CTWqNJoosgWmZfxQrFcrVOo+ft3xnAR6Zn+TF03Tch6ZGuLFk4ZGPXJihUm0Q8Pvoajr5fIHtfcst7NL5OQ7qIgNjU5jeHgRRYPPEojudT4ZxOe1sFbpkax1mEx5SxRpDUS8nlQ4Rj8riYRmvQ2Ik4qLVbLKSbaObAiNhJ71+B7cPqeDYIgAAIABJREFUi1RaOpIIT4yEKNa7LJwO1B7q96NIAgeFBkelliUaMAx8DpmdXJ2QW+Gk3MBrl4h7HRiGycphnnrHYjdc6A+QL9dYPrSUcuf7Axxl8gScljS60+mwl7He6/JYgk6zgWQTyJYqeBwKt9dPgzQnBui0mjhVxTIREjlT7T0yO8rq9gGD8TB+j5NuV2Nla59Gq81EMsHi1gE2UeTJh6ZotjtoXY1KtU6r22X/xKJoPX5+mmK1jt+pWhl8xRoneetzvf51T6BHRqHTYPukwEAsxPJxBY9dYjbhpd7qsnBoUcp8dpGp3iCrx2XKTeti9eRkD5lyk7sp6/WmEn68ToXvbln87JGoB6cicVJpka22uDwc4dpOFhGBx8ZirB6XyNfaeOwScb+LnUyVC0Mhmh2d5SNrMDYU9XI3VSHolEl4RFayXcZ7fGymq2iGyUODQW7tFRkKW9ivQxaZ7Q9Qbmg4VRvf3SkwEZRYLxpcSgZYPK5wMRlAFARWUhXcqoSdDpeGIvzW22ZedXeYz+dZWVlhcnLyvmGwpVKJ9fV1Zmdn77sWO50OCwsLdDodHn/88fuutV/8xV9kaWmJK1eu3NcQ/X71SljhtZruJz7xCQB+67d+C4A3v/nN3AuC+NjHPnaWOCwIwm8DmKb5iVe+1w9U093d3eWrX/0qX/3qVzk+Puanfuqn+I3f+I37hlK+sjRN49atWwwODt73x/KgtbJ1wG/+wZfYOcqg6wblag2/x0l/NIjTruC0K1TrTQTAoco0211q9Ro+t4v9kxxHmRwPz05w5dSQOx4O4nM7sHuDNFHo6U+y2LaI8z1eheGQg1xbZCNTpzfgoN01CHtU7JJAWzM4LLaotjWm4158TomVVIVSU8MuicyEZcptg82C1RQe6vfhkEWWT6qUGl36A3ZiXjsdzWDluELYreCxS3jtEuVml3Kzi1eVKNY7DEddNDs69XaHnWwdj13iXF+ATrfD9Z0sumEy2eOl22pgM7rkah3iPjtLe1lM02S6L0jYKXGQzrN1nGesN0Qqk0PXNEYSIUJuOztHJ+wcZRnpi3KSL1CuNhjtjdAXCVBvNDjJFYkGfdxe20bTDWIhP36vE6eqoMoSIibXlzZodzXOT46wehrdPjs6gMdlJ18ss7l3xPnJUV64swrA5FAfIZ+HRq3KysYWFy5eYslIICAw0+PB51S4vleio5u4FBsDUR8eh8p6qkRH0xmI+MhXmwRV2My3uDQS5/p2lovDYZYOCjgVCacqE/c7ub2Xp6sbDIY99ASdXNmwmvFMb4DdXI3pXj+b6QoBl8pOtoYkCkwmAjgUG7f28kz1Blg8KOKQRRJBD1uZKuNBCV2ys5W17Bmv7xbw2CVcdoWTcuvMsvFcv5+FwzJzCTeZcpOIUyTVgOGol7V0Daci0xe0o9gEwg6JtyXqzE1P4/P5eGVdvXoV0zSZm5u7b2OtVqusrq4yNTV1Xw5utVrl9u3bjIyM3JeD+wu/8As8/vjjfO1rX+Ob3/zmA0X03K/pfulLX8Lr9XLp0iU+/elPEwgE+JVf+RUeffRRfu7nfg6A973vfbzlLW8BLOz3C1/4AgCCIPw88Ihpmr/yyvf6vk2OuF8tLCwQiUR4+umnyeVy/PRP/zTvec97HqjpSpLE+fPnuXXrFqIoEgqF/kWfYXqkn//733+EL//Ns/yHv/gbBBGLtpQuIttEZJvAUG+c524tIUs25sYGWdo+RpJszI0O4HS6aGkmj146T77a4aRUR5FdtLo2UoUihk3mdTMBMi0b66kMuZzIeLKXZNBO2GmjVO/SaHVYLbaIe1XmEi6KDZ3l093VxQE/DtnGrYMSN45bRJ0ic1EFTZC5dVAk4JRJBpyMRVzs5RuspioMh1yMRt04ZJHtbB23YmM/X2c64UPTDXxOF9d2C1Yj7/UxEHTx/EaG5zYy+OwScwlrYHicr2JXJDAEah2TdlfndTNJ7u4es7R7gk0UOJ8MM4qJzyHh6Alykslx69RY59GZITAMAi4VvyNKOldgY2ef7b1DLk4Nk8oWcMgSP3RxmnKlyl4qQybTwOt2nsXbX54do1yqoNjgoYkkixvbXFtYxud2EQsHMTGp1Wv8N4/MsbV/yOrdu0RDAWSbSLPdoZQ+5lK/zN2ayp27WSRRYHokSUeQ8dpt7GRKaAEfpUabiNeOVxGQfY4zuKBUa/C6iRjPrlnDT79TIexSyJSbpw3XjW4YbKTK9AVdxH1WM9YMk8NCndm+AM+tZ1AlkbG4n6XDIqIg8ORknOs7OSRRYCTmZ+mohN8pUzUksrk6rxsNcnO/jCgI9IfcrBxXOD8Q5NpukR6fyka6glsWrDw30cZ+XSBkhxsHZWZ6vIgiViKGIvGhN0/gkkwWFxcZGRkhGAy+eh1MT7O0tMT09DRut/tlxzweD7OzsywtLZ0lRLy0Wq0WPT095HI5NE1jYGDg7JhpmmxsbPCVr3yFH//xH/8XZ6K9//3v5yMf+QiCIPCRj3yED37wg3zxi1/8F73WK+sHaqf7ylpcXORnf/Zn+dM//dMHJk93Oh1u3brF2NjYfX9M/5zSNI1P/8n/yVf//gXanS6GrtPRNOrNNo/MjbO+by28icEE313aRBAEJgdirO6fyoHPTVKstwn4fCCKdESVhT2L5vXwZJKmzYnPoXJSqhML+rl5VMPvkJmIe5Bliee3C1bSQcDBUNhiIuzmrV3oZNyLCWykq7Q6GsMBBdnutBZ8usZ8v4+9fIPBkJOjUoNev+U6NRJx43PKSKLA9Z0ChmntYCMelRu7eWptHQF4uN9Npd4gVdWod01me9xsZSqMxrzoukG71WR5/5SyNhBE0lpoWpfNoyxTfaEz05/5oTheVaBcrrJ5kGJ2pP8svWK0P07AbUcUoFSp4ve4uXLbgtjmxofYPTwhEQkQDfqwiTZWt3c5yRa4NDPG9dN0jIuz4xiahl2VKVdrGIbB6j1D9AuzrG7uMDKQQDANCuUa26fN++GHzpNT4gxGfWQKZQKhMAtHFtQz2RskHvTy/PoJmm5glyXODUaptdosn9ovPjIaw0Rkcd9SofmdCnPJMFe3MrQ1SzxyYShMutxiN1djNOYlX2tRrHd4ZCRCra2zclRCFATOnSrS+oNOkmEPz21kccgivUE3m5kqg0En6Wobtyoznwzy3EaWuFclXemAaRJ0SWTqOuNxL5uZOkMRN8WGpXxLuEWqbYOIz4VNFPif3jzGVNx7tlYWFhZIJpNnd4fdbpelpSUuXLhAo9F4zcYKL0+IeOkmZ2dnB5fLRTgcZnV1FbvdzvDwsBWYWi7zzne+kytXrvyz1uI/Jut96bF/hRf+f6jr16/zvve9j6985Ssvu2L+Y9Vut7l16xaTk5P4/f7/z5+hWmvw0f/wn/n2rSVarQ4CBs1Ol95oCIddwTTA53XTPlWqhf1eNlIl8uUacyP97Ocq6IbJ+ECcQChIuaWzfVKkP+wn0xZwqjK9ATcOVeHqXpmObuK1S1wYjlCod1lLVTCBy0NhuiYU6h12cjUeHgyRrVn6+rvHJQb8KrsljbGYB80wkEWBu+kqDkViJOzCxORuuka1pdEfcDAUdrJfaLKTs8j+5xMuup02JzWNfNNgLuElVapbJP6ugUsRubqRwjwl/w8GVHaPM+xmKySCHtr1CvVmk9GYD59d5M7KBtlSFb/bSdjr5CRXYCQRJuh1sr1/zM5RirDfh6rIHJxkCfo8XJgYpN5sUSpXUGSZuzsHtNodfG4X0XCAblcjGvLjUCTWNndJF0rMjA2xtXdEs90hEvQzOpAA0yCdy+N2qNxZs+wuI0E/sVgMn9dLud7EHwhxM9MFBFx2hUfnJ0hXu6wd5XHbFRLREJph4Heq3D0qkoz7WTsuMRRQ6Zg2+kJerm5n6Qk48TtVjop1wl4LIlIkkZ1sFa9dZn4wzLWtLG3NIOS243MqOFWJg1yN4ZiP2/sFBAEuJMOsHJWY7ffT7BosH1kSYBOBbLXNeEhmvagTdQrEPCo1TcDntHPnsHwGM1waDHD7oMx43INLsdHRDLLVBl4ZfumHJ/nhqZfPPLrdLouLi/T09NDT00OpVCKdTp+Z0NxrrK+1I76XENHX13c2T7l3vtPpPNvZGobBxMQE3/nOd/irv/or/vAP//CB1t495sK9sMulpSU+/OEP8/Wvfx2n08nIyAgPP/wwCwsLfPKTn2RiYuLMQnJ2dpYXX3yRjY0Nrl+/zpNPPklPTw9vf/vb+fznP78AvMs0zeVXvuf3dRrwg1QikWB+fp73ve99vPWtb70vhvTKkiSJcDjM0tISHo/nvsbo/5xSFZk3P3Gef/PIHGvbB6TyJQQEqo0GAgIDvT3opojX5URW7VTrDRKRAAO9cTqGgdthR3U4uHtU4CBdYDQRxu9xoSoSNkNDkiQWDwq0Ol3O9/uJ+Z0c5Otsp8v0B5z0BBz4HDJ39vMEHDItzbLoy5SbOCSRo1KLsMeODYsqVGxaNoERt52YV0UzTFZTFWptjfleP3Gvymqqyl6+gU8V6feISKLARr6NLCu47DJDYTeGCaossZ+vcVBoIIpWeKJo6uxkKhwUmoz0+NFaTXyyjsepQqfBytY+O8c5C2tVRRIBJ52WZRizsLbJ9sExY8kEXa1LMh7C73IQ8bnY3t1ne/+I/niYW6ubVOt1Hj03ZV3cVJlKpYpkE1i6u8Xu0QmTI0mqtRphv5eJoT6LgXB8Qr5Yotlqsn+cplCu8qYnLhGPhGh3OlSqVSqNDrtHaY7TGX74wgTRSJhcqcr24QnxsI9MtcV4IogiGmiGyMphga5uEPM6mEgEWDgsU211SZfq/PBML+upMielBu2uznjcB4LARrqCJArMDoRY2M8zHPXisssYJhwVG9SaHeYGghwU6jQ7OheSYW7uFTCBsNdxKs21gSCQrrQZCkjslA0kAUIeJ+v5NuNxH2vpKo+OhGlqBhNxD/WOTjLo4qTaJlNt47JLxH0OHu11MOmsvyoN2GazEY1G2dnZodvtomkasiyfDbgkSSISibC2toYkSS+T6b/0+fccvrxeL3t7e2dCCEEQCAaD1Go17ty5w61btxgfH+fixYsPtPYCgQCbm5vcvHmTfD7PH/3RHzE9PY3f7yedTrO6usrKygpf+cpX0HWdv/u7v+OXf/mXuXr1Kul0ms9+9rOMj4/zEz/xE/z6r/86t2/f5tlnn0XTtKdN0/xf7/eeP/A73Xv1rW99iw996EN87WtfIxqNPtBzms0md+7cYWZm5oGa9Svrnm9DOp0mn8+fefi2dIH/+Yv/hauL62hdDUGE8eFBRJuMJNnQdJNiuYLf60GxO9AME0038LhdXF0/otnucm6kl7pmuVuJNhGnXeW5jSymCROJAPGQj3ytw3qqRMBtpyfoxq4oVJodSvU2AY+TWlsnEXBQrLdRJImVkwpJv4JHEVEdTm7slSzRRL8fj13i+a08Xd3Eo4oM+USqHdgra6iSyHjUjYGATRQ4KjUJOmXunlToDTgYDLmoNdtn0tSZhI92o4bfKZMqVIm5Za6cDq4Gw27iDpNaucjdnQMmhvq4tWJlqCUiQUYSUdqdFoepNIlYmOsLdzFNk0jQTyjgw+VQkSUbTrvKM9+9ia4bzE+Osra1R6erMTs+RMDrod2xRCnhgI+bp45wowMJ9lIZkr1xeqJhTEPn2sIqrXabxy/O88KNRRRZ4tEL89gcLpa3DimUqzz+8AWuH1QJ+VyM90UQFScvblnQic9lZ2IgTrOrs3yQx6nK9EX82G0iqUKVXEPjkdE4+/kaQY+DlaMiLlViMhGg3OqymbYgi4cGQ9hEies7OQIuhaDbzlamSsStMtUX4Nm7GWyiwFz/qehBEom6RFyqTBeRg1KHtm4w1+tn4ajCTNzJSrrJaNTNQbFFMuRkJ9/gXJ9lcBPz2Yl7VUzD5KF+H//jk0lSqRS5XO6+IgfDMFheXqbdbjM8PPyqXa2maSwsLBCPx+87HNN1neXlZTweD4VC4b5N9XOf+xx/8id/whe+8IWXUUL/qfrHoIWvf/3r/OVf/iV/9md/9iAmNwB8+ctf5l3vetcfvVSF9tL616b7knr66af56Ec/yte+9rUHxmsbjQZ37txhbm7uVQOB+5Vpmme3WC/1bQiFQq9Sz+wcp/nYf/zP3FnbxNBNenpiREMhmh0LY0zniqh2O0G/j6ZmICCgyBLllsbWcR6XXaEnEqShmYQ8TlRZIlPT2EyXsQnwuukBOqZAttpiL1vh4nCck2qbuM9JrtYk7HFyfa/IYNhNxKMiSyJXtiwLwcGgSjLq585BiVJTQ8BkPqrQ1OGgatDsGlweDFJqdPE5ZDazNcaiHq7uWomzQxEXik3kO+tW8wk4FYaCKqJo5YV57BInJ2nKjTb9foVhL9xdWWLnKI3H5STqc7N9cMz4QIxEyMfeYYr1nX2cdpX+3jhr2/uE/F4uzoxRrtQ4PsnS1TREUeA4k7e8cc/PUKnV8XlcKLLMwtoGhVKFSCiATRA5yRWwqzKzY4O0mpZngtvl5OrtZUzTJBoOIokioijQ1xPD63bz/M1FGs0WQ/0Jyl0wDMshLhAK8+xaGt0wcKoyw0ODOJwOKnXLxtLt8XBYqDHVF8QmiLR02EpXkASB+YEAql3lxU3ru7o4FGE3VyXmc3I3VebicIRr25Zh+evGY6xnqqTLLRyyzWIXpMrM9/lotLus51rYbQKJgJPtfJPBsAtBEAm6FSRRtChhcTfb2Tp+h4SODVUSaekmCZ+D9XSV2V4fTkWk29WZjHv47bdNYxgG3W73zJv6fiIH0zR5/vnnCYfDTExMvIpOpus6S0tLBAL/L3tvHl3JXV/7fs5UZ54nSUfS0TwPLfXkbjs2xgyOcWJ4lzhAeKxFQmDZz+CEQAgXCIEbZ2FIyANfM4THsB6BZ7jghCQM8Yuxiace1C211K15PtIZdOZ5rFPvj5KE2y0b2Zj7col3r/5HdapOrXWqdv3q+93fve0Hlvrq9fq+XOz48ePX7C9JEuPj4zQ2NvKDH/zg0PfwC5Hub/3Wb/G7v/u7vP3tbz+MyQ0ATzzxBDfeeOMPn+238Gy8QrrPwT/+4z/y6U9/mu9///sHFvcPQj6fZ3p6mpGRkWtej+Bqs/Rf5NtwEGZXN/mLLz3Ewsombqcdr9dLXVKAAtLpLCpBh91ioloHcddPVqfTsRpOEUpkGO9uYT2Wx2MzYjPpEAQtE6tRcqUKPU0OrBYjSoWS7UQOs14gXZGw6LXYDYKsrEiVSeQrdLrN+Ox6gukyK9Hd0Va3IMee5+oki7KgvlgVcZl0bCYLeM06FsNZBI2Sbq8FvUbFMysx+TwVcKrDSUWss5kokCvV8FkF5oMpOj0mGi06thYvMbssa3BP9rUyM3OZJpsOo1ZNqVxmejeu/dhwP3MrG3S3+TDqddTFOk9PyprnU+PDnLl4GYNex/hgDyqVip1YgtXANoM9P9dAH+nvYj0QxOtyYDEZqdZELi+uyg3MzlZmFmSVxE0nxykWSygUCnKFAuFYgngyjUKh4PjoIGtbIbr8zag1AnNb8sAKwOljY+wUJRqdVrZjafRmO6vRLCjgut5mJJXA+RW5EWfRCwy3eVmNZgmnZL+M3+hrIlmocmVbfiNodRrxu608uSjvM+p3shTOMOCzsRnPo9eo2UgUEJQKWuxa1BoNxZqEXtCwGMnSYjeQrYikClVOtDuZC6U50mKjXINItkSpUqVQrWMz6VErwGrQYtGpKFRFimWRXq+R+940vE9+e8Qbi8UIBAIHDjmcPXsWu92OKIr09fVdQ5z1ep25uTn0ev2BKRKBQGB/Yuy5xJ3NZnnTm97ERz/6UR555BEeeOCBX3hvwfOT7n333cfExAQPP/wwCoXiMCY3wCuk+5Lw0EMP8YUvfIHvfe97h1q9ghxkNzMzw+joKAaDbMKyZ5CTyWSw2+37vg2HNVV+Lh49O8X9X/ke1Xodb0MDBr2OdK5IuVxCp9ejVGnQaQUqdQmxLqHVaMiVRDajKfRaDRaziUJVxGUxYjHqSBRqzG/JDlvHupsoi7L7WiSVx223cHkrRXeDFZtBQFIof+6jYNNgNmjYzorECiJeiw6XRY9RqyaWLVMVJeoKSOYr9DVYEdSylCyWl/PqTnc6EesQSBYJpkscb7MzsR6n023GadYhiTXOLstE0mLXU9ucwqYsk47vYDHq982CrGYjXf4WtIKGbC6P0aDfHyixWcx4XHa0ggazwYhBr+XxMxepiSLtLU3EUxky2RwtjR68DiuFUplEOovf18jZ3VTnTn8zO7EENouJlkYvglrF5cUVYsnMbjlB1kr3dvjRagVMRiOxZBKj0cjUnNxcG+7rIlNV0NLoIZ7OY3e5mdxN5G10WujuaCOQKLAZTdPkNCMqBbxW2dw8mi1iN5kIJvN0OXWsJSuMtslm5Ec73MwH05QqImNtcqTU+TX5uC02LTq1xHamjkatxG0xsBLNYdFraHaY0Asq2YmsLJLIVzjRvicN01EWoVCu0eI0EkwVcRuVlGogosLvNJAoVFArFHQ49fzNnaPXXMv1ep1arUYikWBtbe0qo5parcalS5cYHx9nfX2dfD7PwMDANcfYS5FQKBRXZZ4BzM3N0dTURCKRuGb/p556iu9///t85StfQZKkQ4/tH0S63/jGN/jyl7/Mo48+eqCWGA40uQFeKS+8ZHzjG9/gm9/8Jt/97ncPrfVLpVLMzMxgMpkolUo4nU48Hg9Wq/WXSg99NiRJ4r998Vs8cfEKPp+Pqij/ROF4EqfdBko1apUKlVpNqSoiSRJmo4HFYJydVI6x7lZWIxlcNgNuiwmNILAUSrIdzzLk91CWlNiNOmpiHUGjZno7I4/E2gQ8Jh1b+TqRbAW1SsGxdi/ZQpF8RWQnX6On0c5cKEN/owWNSkmpJnElJMeZDzRZsBkEQuky6/ECvQ1mthIFPBY9LrMWjUrJM2uyXEqjUjBkr1ENrxDeWKZcKpFOxognUqhUKl596iiJVIrNoCy5shgNbGzL8rpXnz5OqVwmly8ST6WR6nWCkV2z9/ERtiI7uG1WkOoEQjtEk2mMBj2NHhfLGwGUSgU3nTxGqVSmUquiAKbnlqhUa9gsJsxGA1vhKJ1+H52tzUTiSRbXNulo9bG4tkmlWkOv0zLS34taoyGRzmI2mZhajyBJoFGrOHXiGKJCw+xmBINWQG20spMpMdruRaVWsR4vkcyXUSjgZFcDJVHB9Kb8wPNadPS3uHh8NyPN5zAgqJSYNAouhwv0ewysJCtUxDojLXbUSiWTm0k8Zp2cyZco0OYyYtBqUCkV6DUqzq8n8Zi1KJRK4rkKvY0W5kM5BnwW1uMFjGqw6hTk6yparPJbxud+91rC3cPeijedTrO8vMzQ0BBGo5FMJsP29jb9/f2AvGpNJBIHmpXvZZ6Vy+WrrB8nJiYYGxtDpVJds/+DDz6I1WrlrrvuelH31HNJ9yc/+Qnvf//7+dnPfnbVINQvMrn5/Oc/z8mTJ7ntttv4yU9+8oZnm9w8G792pPvAAw/w4IMPolKpeMMb3sCnP/3pl3QcSZL44he/yL/8y7/wrW9968BZcLjaIKdYLGIymUin0xw9evSXVjW8EM5OL/B/fvMf0Oj0oFAhAaGdBIJWwOmwUyhV0AoaJIWKUqWKVqMhXxHZiCSxGHQYDEbSxTJeuwmXxUSmLK+Ia2KdZo+dWLaMTadEo1JRkDSsx+VX5Ot7m5CUKnYyRVYiGY51eLgcyuC36zAZZKOWM2vy62+jVUdPg5VQpsLSTg67QYPNICBK0GDVUxElVuN5sqXdLLYWA4WdTYKBDbbCUXq8JianL6MTNJwc7aNaLjKzsCqPTI8N8tTEFIJGzfGRAQSNmrmVDcLROKfHh3l6dzU81N2JyainVC6zGYzgcdqYX5HTjseH+ri8sExnazMetwNRFJmaXSJfKHJ8ZIBzl2S1z4kjg6QzWZx2G6JYJ7gTJRCMoFQqOTLYw8XLC5iMek6Pj5AtFNncjsiJzw47G7sRSzefPkZNqWNrJ0E0maGzq5uFUAqzQct4dyvxipL5bZlY2xvsOGxm0vkqqzsZHCYtDosJh0nH1KbcrBzz26lWRZZicrKvTq3kVE8D/764g1iXGG62sxYrUKmJXNfpYj4s57H1NJgJZSpkSzVOtDsIp0s02/WkiyKLkSwDTVZmghmOtNhYiGRpsuoxalUo6xWimRJDrU4+e+fYL1xE7K14s9ksCwsLDAwMkM/nqVQqV9Vr98zKR0ZGDnQY29jYIJ1OMzgojxRfuHCB48ePX7P/8PAw99xzD3/8x3981fbnw0EmN263G5vNxvLy8r4sTKVScfLkSbRaLd/97ndJpVL4/X6MRiOf+MQnSCQS/OVf/iWlUglJktBqtfzmb/4mDz74oFJ6HnL9tSLdxx57jPvuu48f/vCHaLVadnZ2Dq1EOAiSJPHZz36WJ598km984xv7jYFKpUI0GmVnZ4dKpXKVQY5CoSCZTLK4uMjY2Ng15ssvJ9KZHJ/44t+TypWRlEryxTK5fJ6apMJuNVPd/fXMRiOZgnxRWM0mlrZjJDJ5Rrpbubgcwmk10uG1Ua6JZAuybWNHo5OZ7SxWo0BXgw2jQc/sdoqddAGfw4TRaMCsl20v65LEarxEoSrhMmsZbrYTztVYjMir3PE2F6FMBZ/DQKpQQ6FQsBSVtbsjDXo05RTB7W1WglGOdzVxdnIGvUbNQKsbo6rKUxcuUyyV6fL7CAaDaAUN3e0tWIwGfnbmIuVKleZGD/l8nmy+QF9nG41uB/Mr62wGd2htdLOTSFEqV9AKAkeHe0FSkC8WMRr0PD0hE3Srr4F0JkexVKKvqw2P08FOLMHyxhZHBnr2ywldbS3EEknsZhNerwtB0PL0xDQ1UeT00WGembwCCgXHh/sxmExshmOsb4e5/tjwAfRkAAAgAElEQVQRzi5soVAoGOvrwOZu4PxyiFKlRnuTm2xNRXuDg1RBdk+L5CrkyzXGOzykihUqNYmtZBGPUYVWo8Fm1jMfyeF3mSnVJLaTBdk+Uq/lzKrc8BxpsbO0k6PVacBuEJgKpCnV6vslBa9Fh0Ih56SNtdgoVEUcRi3FqogEKIDtdAm9EvwWJe8ZN+2HNv4i7BFvPp9nfn4eo9GI1+vF5XJd9bkXiliHn1s/dnZ2EggErvHIjUaj/Pmf/zlLS0v87Gc/O9Ri5yCTmz/90z/F4XDsJ/4mk0nuv/9+fvSjH/HAAw/sJ/7ee++9nD17lkQiwbFjx5iYmEChUHD06FEuXLiwN+H6vE+lXyvSvfPOO3n3u9/Na17zmpftmJIkcd999zE1NbUvDTt27Bgej+d5DXJANl9eWlr6lRNvrVbjM1/9HywGQoh1BSIS6XSWqqSkjuzNkMmXMOi0SAol5WoNnVYgX64RSaRlh/9KjUSugsdqoLu1CbEOYl2kXpcIJIvEcyU0KiWnB/2UapDKFQknc7Q2epgNpmlxGPE7jcTzZRaiJSRg1O8iVYYGm55YtozLYmBiS26+tVjUtBjrbAXDLG3HaPNYSSQTVCpVejxGLJo6T5ybpFSuoNMKtDc4SaYytPm8KBUKJqZlS0uFQsHRgW6W1jdp8jixW63MLq+STGdRKhX0tbdyZWkNX4Obwe4O4qk0S2uyn4LDZmF9KwjA9UdHSGdzWEwmFAoFl+YWyBWKWExGHFYL61shBI2aG4+PUahUyOTyaDUapmYXEev13bKDkWy+SFdbM067jQtXFokn03S0NhHLFMgWSnT5fXR3dHA5ECMcT+OymjHYPRTFOr0tjVTqsBwvUijLD6bfGGwhmJKz5ADcJg1djQ4mNlLU6hJqpYIbehu5GEiSKVZxmbS4LQaS+QpmnRq7ScfEhjx1eLzdydRmkiOtdgSViqdX47TY9RRrEulilb5GC5e3M4y12pkNpml3y72MTLGKWauk12viU/9llEAgQDQaZXR09NBetdVqlXw+vz/JeZBb317E+vDw8IGkGYlEWF1dxev1XhVmuYeHH36Y97///Vy4cIG2trZDnddzywq9vb08/vjjNDY2EgqFeNWrXsXCwgLvec97eNWrXsVb3/rWqz639//LX/4ywHM/97yk+9I6Ov9Bsbi4yBNPPMHJkye56aabOH/+/C91vGw2y+c+9zn+7d/+jYmJCc6fP8+tt97KiRMnaGtre17CBXA4HHR2djI1NUW1Wv2lzuOFoFar+bN3v4Wxvk6U1FEhE4pULWHRadjcjqDXKCmXS9SqZbRKiXQqSSWXwmczoBNU2HVqTnY1EomneHJyFrFSJLiTQhRr9LgNnO72ohSrPDYxRymfJZrO4XeZ0NULnPKb2QjH+PcrG+wkMnTZ1Qx5tCSSSfT1PJe3kqzF8mxEEtzYqKBNlWR1aZ6zV1ZRKxWySbayQo9NiSYb4tzERf7tmSnGB3po9jg50tMGCgUGvZZnpmZ5avIKAz1d+JsaODU2RL5UocHjYnY1wFOTl2lwO9FrBYZ7u7DZbFw3PkQwEuP/ffIcgkZDJpcnVyjgcTm48fgYw71dXLyyiFYr8PTFaZ66cImB7g60goaWJi9tLU2cODKIQqnisXMXyReLXF5Y4cLlea4bG2Kwp4Nmrwu71YJSpWRiZp5HnjhLm68BhUKJTtByfLCb9mYfK4EIjzxxhgar7NXa5HXQbNeh1eo4u7jN5PI2bXYdY+0evFYjT8yFqZZLWHUajnV6qSgELgczdHgs9PtsOIxaHl/Ywa4XONnhoioqmA9lKNdE9FoNCkCrVnLU72RiPYmgVlGswbmNJDd0u/BaDdTrEt1eM7PBLEdabMyHM/hdRlRKsOvViGKV050OPvVfZMPxlpYWGhoamJycPPR1LUkS6XQalUq1v2p9LhwOBz09PUxPT1MoFK7Z7vV6MZlMRCIRyuXyNdt9Ph+nT5/mjW98I3Nzcy/mFtpHJBLZfyA0NDQQicjN3O3tbVpaWvY/19zczPb29vP+/RfhfznDm9e85jWEw+Fr/n7fffftd03PnDnD+fPnufPOO1ldXf2lmlg6nY6HHnoIj8fDn/zJn/Dggw/ymc985lCvVy6Xa9+Pd2xs7MCa1csBhULBe3/vt/nCQ/+06xmgkGuC6SwNDgtboTCCRo1O0IBChcVspFoHhRLcBgOlqohYK3PTkJ9ANM304iqtXhcboR0SmQJ+j41jnR5K1RqJVAKHUsnGdp5kvoRJp+HG3hby5RproRiBVBSH08VWtobPpGLUqiSuUHJlJcrWCpzsb0WnVtBthXoqQLOixNlz8uqz19+ESafF67QQicZp9rp4Zkquq7rsFo70d6DX6QhGYjgdVp6elLcZ9ToGu9vRChpy+QJHhvp5Ztci02m30uRxUZckJOD1N57imckZzl2apa/Dz1pgm3KlyuJqgOvGhlEqFWRyBY6PDPLkxCVgjb5OPyCh2P1386ljRONJJmbmODrUv2/H2dPegkatxt/UgEKp5OhgDxNXFpld2eDYSD/rCuj2N6NVShzt8zOxFAIitDW68HvsWI161qMZGmx1kgVZeeB12nBKCubDGXKlGg1WAyadQE2CnXwOq06FTq1gIZKn2WGQJ8yyZWa25QGGIZ+dbKlGo1WPRqPiSjDDaLOViY00ekGF06SlVK1zvM2OKEn0eM1o1UpCyQI7qTx/+BsdvP3U1VmBTU1NqNVqJicnOXLkyIFvcnse1ZFIBFEU8Xg8jI3JteC5uTlEUbxmxWu1Wunv739eIxxRFOnq6uLSpUvXWD9OTU3x+te/nltuueVluc/2pt1+Ffi1Ki/ceuutfOhDH9pPhujs7OTMmTO/lBXjs1Gv17n77rsxGAx88pOfPLT0KxKJEAgE9ruuvypIksRnv/4/mFnepFAoksrlUEgKJKUSrVaHUqXCZNCTL1UwGXTsJGUP1Sa3nehubI3DYqRSq1OuVClXqtRQMLceQqFQcN1QF/NbMVrdVix6LaWayMWFTcR6neuGupnciNHlNWFW1clm0kwvy2Ta195CXnDQaIBqJope0PD0ZVlSZTbq6Wr1odXI2lmjXsvcaoBqTUShUHDjWD/lapXNYESOTcrlyBVKANx4dIhKrUYynSWdzVOplIklZbe060b7yeXzmE0mypUKiysb5ApFlEolI32dTF5ZoKOliZ72ViKxhDxYoZfNcSIxuRF4YnSATDaHw25FJwg8MzlDsVSmwe2kJorEEil0gsDJsSEqlSpb4QhOh41Lu3Ixm9mE3W7DaDBgMRkRdAJPXJJ1xSaDHl+LH0FnoCpJiJKSpKinUBUx67Wc6PezsFMglJJXfUPNDiwmAxc2ElRqddQqBTf2NnB+PUmuXEOrUjDc6kSpgIsbSQZ9NtbiBbKlGkM+KxqVUvYu1gtMbCTx2eRJxmJVxGORc900KhVei5ZouoACif/6hgFu7Hn+nkgsFmNlZYXR0VF0Ot1+ryMSiVCr1fB4PHi93qvUP7VajXK5zPz8PE6n86qV4h4OMsJ5dq7anvXjs4n57rvv5u677+bUqVOHvl/+/yov/FqR7pe+9CWCwSCf/OQnWVxc5JZbbmFzc/NlfWKJosg73/lOWltb+fCHP3zoY+91WV9MLezFnlcsFmN7O8j/9Q+PEEkVUChVlCs1atUK6WKVjtYmCqUyBq2WjUgMUKBUKlkKhOlo9pIvVeQSQbMXlVqDUqnAZtKj12lJZvKEY0n8jW7Oza0jSeCxW2hyO9BqoFgooBfUnJlZlMMrdVr8XhvquohYLVEXRdZ2khSK8qvhzaeOUqnVicQSJDM5jAYDWxFZZ3rziWGKpTLrW2GiyQx+r4OVXfeuU0f6USKxHYmxEdxhfKCLiRlZHznS24FWUFOpVFnZ2KaztYmp3XDPvcGHrrZm1Co1xXKJS7O7wZ/jwzy12yQ7NTaEQqGgWC6zGQzjsllZWJXVDqePjvDMxWm62pppbWogmckyuyTHB/mbGlhY29w9x0HE3XsulcmRzBaIp+Rx3ROjg6QKVQRBQ7JQRmvzENwdfjg93I3KYGN6K0mxUmOo1U00V6HNa+dKML0fw+My68lX62zE8xxrc1Cu1QmmCsQLIkZBxVirg2C6xGa8wLjfzsSmnHXW7bWQyFdodxnIlWtkSzXqgFKhQKdWYNGp2Y7nAIkv/e/H8bt+sUY9Go0yPz+PTqeTp/QOINqDrtVyuczi4iImk4m2trZr7qPnGuGUy2Xm5uY4cuQI8PP4nt7eXiwWCzfffDNPPPHEC5b8notHH32U22+/fd98Z3Z2lte97nUcO3aMz372s+h0OpqamnjjG9/I2bNn+dGPfsTdd9/N17/+dfx+P/fddx8f/OAHuXjxIgDj4+NcuHBhbxLuPwfpVioVfv/3f5+pqSkEQeCv//qvefWrX/2yf0+tVuNtb3sbo6Oj/NEf/dGhiXevnjU6+vwaxxd7HrFYjEgkQrFYxOVy4fF40AgCn/zvf09gJ4ooShRKZaqVMumCHPueyhUw6HRcmFtBgYLhnjbmVgNYjAaMBj1LmyEcFhMuh4XFzTAatYqxvg6iiTQOqxGbyUAskWY5EEStUuGyWVjZCqMVNFw/0kMukyYUjhCJxfE6rKwG5JXyTdeNU1eoCISibIZ2OD46wPldC8WTw73odFoW1rYIx5IMdvi4sirXxwa7/HgdFhY3ttkKRzk62M2Fy4sgSTR5nPT4fcTTGeZWNhjp3Z0wkyR0Wg39Ha3otFpS2Rw2i4mnJ2RybfK4KBaLKFVKuvzNWM1GLl5eIJZMcXS4jwsz8/ueDW67DYvFRLVaQ6cTeGr3GHufUymVjA32YjToCe3EWF7fYnyolwtXZPvJLr8PtVqDSqUiGEvR2d7G1KqsK27zefF39ZMsw2IwQX+Lm81MDYdFT7PLQbkmsRLLUaiIdHotWIxaMoUaq9Gc7H9gM5Iv18iVapg0kCiKJEt1mqxa2l0mlnby6AUVtbrEdrrEcb+NC7sZd5uJIp0uI2vxPI1mDdFMkf4mCw+89ajsa/w8qFarRKNRwuEwtVoNs9lMMplkdHT0wInMgyCKIpVKheXlZTQaDV1dXdfcR8+2hlQqlSSTyassWEul0v5Y8Ec/+tF9FcFh8Na3vpXHH3+cWCyG1+vl4x//OB/5yEfo7u5mfn4eh8PB2bNncTgcSJLEPffcwz//8z8TjUZ59NFHaWxs5DWveQ0f/vCH+dSnPgXARz7yEd75znfufcV/DtL9n4lKpcLv/M7v8KpXvYp3v/vdh/6xA4EA8XickZGRl0S8exf8zs4O5XIZl8uF1+vdl6vtIZFK84kvfJNUJkexXEWSJLKZLBqdDovZxNnpBZob3Gg18orWZbOSK5ZQKhTo9bKTWU0UsRj1zK1uEU9lOTrQxdkZ2fxlrK+DYDRBo9OKUSeAVOfs5AyVao2TI/2cnZzerbW2IdVFljdDJNJZxoZ6mVkKICEx2NVGg9fN9MIqO4k0PredeKZIqVKl299Ee3MDl5fWCe7E8TrtiGKNWDJNo9vBSE87G9sRFtYCOKxm1CoF4VgSlVLJzSePkC8UWQsEqdZq1GoiqawsX7tudIBMNo/NakKSJCamZ6nWRPQ6LU0eJysbWzjtVo4O9ZPKZFnfCmExGdkKhSnuSs7amxsplEr4GjyYDQaenpwhly/Q1txIPJkhmy9gMRrobWsmWyyxFYnj9zWwvL1DtSai0wpcf/I4+bqa2fUwTquJuslJIldlqMOHzWZleitDvrKrX+7xUpOUTGzIZQ+nUcNoi5OnV+OUa3UcRoE2twkFCi5uJul1Cmxk6hRrIsf9dqqihCRJKJUKJgNpjvttXNxMMd5qZzOex6CBZLbI265r472v6XvB6y4SieznCHq93v2V5d5E5tDQ0KHNn/aId21tDUmSDvRj2LOG1Gg0uN1uGhoartoej8e59dZb6ejo4Ec/OnAW4VB45JFH+MQnPsFTTz31oqN6nqek8byE8J/e2vGlQqVS8aY3vYn77ruPcrm8/9rzi2C1WimXywQCAdxu96HIulKpEA6HWV5eJhgMIggCra2ttLe343A4EAThmuPodTp621o4P71AtVKlVK5Ql6BYKlKpiDS47RSLJWxmI3qtQDZfwKTXEQhHiSczmAxaQjsJypUqLV4XLpsJlVJBf7sPvaAiEArjc9m5vLDM2laIdDZPa6MHr9OGTlDT7W9mZWOTzWCYfLGEXicginXcTgcD3X4S6RwbwR22QhHsFhPpfBGf18VQl59yVbZGXNsK0dHSRDiWxGYxMtTlR68VWNsKsxII0e7zsh2JURfrjA100+hxks7lmV8N4HHYWFrfoliq4G9w09bSSLPXw/pWGJ1OYHJ2ia1wlBOjA4SjcXraW2hwObFZTKxvhVnd3MbrcrC0HiCRynBybBCv00GT102hWKZYKjO/ss7K5jZjgz0EIzFcdittTV40aiWxRJpoMo3FbCIST5LLF7jp+Cgup5NktsD6ZhC73U4omcNsMtLf3orR7mR+p0ggkafNZZTDNs0mLm3L/gxus5buBivRvMjCTp6jfhs+u4FQpsJmoohaqaCnwUy2XKMm1mh3m7m0ncGm17CTLZMsVOjzmpGARosOsVYjksyhUyv57FvGeeP41SYzewY2y8vLbG1todPp9q87u91+laGNIAg4nU4uX76MyWQ6lFZWqVSiUqkwm81ks1lCoRAul+uqa3nP2nF5eRmtVnuNiY3BYKBSqfDoo49itVoPfR8+F/fddx+ve93rOHHiBI8//jh/93d/x9e+9jXOnz/PjTfeiF6v5zvf+Q6Dg4OMjIwA8Pjjj+P1ehkYGDjokJ94vu96ZaX7S6JQKHD77bfz9re/nbe85S2H3m9tbY18Pr8/afNclMvl/ZXFXvf3hXTBz4fzM/N84f/5J6rVGuVKlUKxBHWRlWCU/k4/ChSI9TqBcIxgNM6p0X6euTSHWqXiSF8HE5cXUatUjPS2c3G3BnpqtJ8rS2s0eZw0e13kclmiiRSpbBa9RrM/knv90RFCkSgNHifVao3NUJSdhNzoGuntYHY9yECHH4vZRDqf58qyXBM9OdrP2ekFWhrctPk81MQ6z0zJMqCjg91cuLKEXqdhpKcDg07g7KU5CqWyrBbYre/6m7y0+xqIpVLMr2zS62/cP77bYcNqMuC0W3fHdn9eMhjoamNpTTbYGe7twmo1EdgOs7K5zamxIZ66ICsVOlt9VKsV3A475UqZWq3G/JocEHpidIDzl+Zw2q00e5zoDQamFlYolStcNzbMudk1bBYzQ33d6F3NPLORQZLA5zRjMNtwO6wE0lUEtYJiWaRcq9Pns7KdKmM3aJgNZTjSYieULiGolRg0Ssx6DZOBNGJd4mirjVS+iLJew241c249xUCjmVC6TINFIJopoVVKJHIlru9285nfGUcryH2GWq22XzrYG/zZe5M6DEqlElNTU/T09Bza5ater1OpVNje3iadTh84Fnzu3Dn0ev2BNeD3vve9vP3tb+erX/0qDzzwwDXDF78IlUqFpqYmrly5gtfrJRKJ7JP/xz72MUKhEF/72teeNx/tzW9+80GHfaW88KtENpvltttu46677uKNb3zjofdbXl6mUqnQ39+PQqGgVCrtR8HvNSU8Hs9Lznnaww8fO8P3H/kZlZpIMpVBq9OSTKYwmkxYzUaevjiL1WzEabNQr9dpcDvIF0oolQqMBj25fAGxXsdq1LMaCBFPpenv8HNmSu76HhvuZWJmTvbW7etCJ6gpFkusBYJ0tvo4Ny0TZpPHRa1ep8HtQqvTodfqeHJX9tXa5CWdK+K0W2hwOdBrBX56Tp4Ua3A5qOw+NAY6W7Fbzfz7xDSlcgW3w4pUrxNLpvE3eejraGVlI8jSxjZNHieFQoFUVh4uGOttQ6vVE09lUKqUrG5sUanW0KjVdLf5SKWztPq8mAx6nr4gWzQ2uB1Ua1XiyTR6rcDJsWFyuTzbkShGvZaVzSD1XX8Lt8OGoNHgsFnR67Q89swFJEnCaTWj1KgRJehpa8FssfLk3DY1sY5BJ9AzPIbW6kEwWogVROpSnWCqRJNNj99lIlmoshDJoVDAaLMVk1bDmd2opSOtVtZiBdpcBqpVuaSwHM3T5zWRzJVJFyuMttioiqBXK4hliwSTeax6De97TQ+/Nda6T7R7GtgXS7TPRaVSYWpqivb29kMrh/b8GkKhENFo9Kqx4L007qNHj+6bnT+7BvzqV7+axx577NDmVM/FD37wAx588EEeeeSRa7YdJqrnxZYXXiHdlwnJZJLbbruND37wg9x6662H2keSJObm5sjn87s1NyVerxe32/2y+zZ87Xs/5qdnL1Kr1alUq2yFo9hNerKlClaLiUq5it1qRqzXSWXyeJ02zlyao1qrMdrXyYUriwgaNYNdfoLhKDaLCZ/HSbFUplYTMegFnp6YkssRjR5SmQzZXAGtRs3R4X4kFCTSWbSChtmVAGK9jlqlYrCnk6ooYrOYkaQ6E1eWEet1lEoFwz2drG2F6e1oQS8IXJhdIl8so1AoONLXweTcMh3NjbQ3N7CxHWZ5Myjv193O1NwyKqWSm46PUCyXWd0MkkhnaXRZ2QzJvrTXjQ6Qzecxm4ykMlmSqTThqOx/cGpsiGcuzuD3NdDV1kw0lmB+dUNekXqdrG3JWvEbjx+hVCkjSXIOWyqTI5qQa6+nx4cJhHZobvSQTmcIJzIkM/ID4PoTR8kKTrzt/YTKAvbdJGaVUsG434GgVvH0qpz0YBaUjLfaWY7J8fYKJK7vdFCsSlzYTOE0Cvgdema20oy32tAJSs6tpeh0GwilCuiVdcp1EGvivhfDp/63ETLp5MtGtM9FtVplampqf5jiMNgj3p2dHYLBIKOjo2g0GjKZDMFgkL6+PiRJYnl5mVqtRl9fH5VKhde+9rVcvHjxJauU3vKWt/D6179+vwkWCoX2NcR/+7d/y9mzZ3nooYe4cuUKb3vb2zh37hzBYJBbbrmFpaWl51MjvUK6vwh/8zd/wwc+8AGi0eiLfj3ZQzQa5bbbbuMv/uIv9rXCB6FQKBCJRIhGo6hUKiRJwmg0Hugv+nJBkiTu/8pDzO6GKmZyBRRAoZAnninQ3eZjJ56iUCyTKRSIJdKcHhvg3KU5dFqBvo4WJmeX0KjVtDc3MLu8hkqlZLSng4u7Xfqx/k42t0O4HTYcNgvZfIGFlQ1QKOho9TG3Ir+233DsCMlMFrVaTSKTQ63W7BvDXHdkgMWNbXramqnWRFLZPKu7BHdypI+z0wt0tTTidTsolsr7JY+TI32cvTSHoFEz1t+FTqthcnaZdC7PqSMDPHNRXpU3e11Y9Fr0Bj3Lm9v0d/p5ZtcOssvfTCyWoK2lEZ1WQKzVOL9brhjqbuPy4hpKpYKxgR5MBj3BnRhL6wFOjQ3tD0h0t7egF7SYjHq2wzt4XU7OTctWkc0NbowmC26vl81Igs7eQWZoA6DNaaDNZWAmmCOer6BTKxn2WQCJ5WieZKHK0RZZs7qTrRBIFjFrVYy12thOlthMFjjSbGU2nMEoqGi06ChWRQwaBeuRNMVKhSabkT+4rokuU5VisbhPtC91hfiLsGfl6PV6aW5uPtQ+e8Qbj8f3/RhisRiSJO0fQ5Ik1tfXyeVyFItFvvrVr/Ltb3/7RZ9fW1sbRqORhYUFhoeHmZycJJFIMDg4SCKRQBAEbrjhBr72ta/R0NDAvffey7e+9S1yuRyNjY188Ytf3I9fPwCvkO4LIRAI8K53vYv5+XkuXLjwkkkX5KfkG97wBu6///6rIkPy+fw+0QqCgMfjwe12IwjC/opXEIRDpxK/FJQrFT7++W+wth2mWq0iSQpWAts0Oq2gVGPQaTk/M09veysWkwEk0OsEkmk5uFKjVpMvFDHotaiUSmrVCmJNBEkknswQTaYZ7unYLzscHerj4uV5dFqBkb5uDAY9oZ04yxsBThwZ2k/mbW5wY9AbcDltZLIFLGYTZ3bjeVoaPaRzBRrcdpxWK1pBzePn5fprS4ObVDZHtVpjoMuPy27lqYuXyRdK+Ju8RBNJ8sWSnCDR30UkkWJuZQN/k5fVjW3EuijXrgc6USlVlMoVVAoFF67IRGsy6LGaDBRKZbrbWrBbTJyZnCGdzdPmaySeSpPJ5XHZrRwZ6CGVzrKwtkFrUwPL6wHKlSpaQcN148NUqyKrgSCCWkUWgWyhjNfj5eQtt7FVFFiNFVAo4JjfTq4iIqgUXAlmONJiZXknR5fHzFayQFWUaHPqUSmVzIWy5MpVjrRYqddBq1YhqBXMBjP4rFpWI2mUClArJU43abjVr6SlpQWfz/crI9rnQhRFpqencTgc+P3+Q+3zXE9eo9GIz+e7JgT2hz/8Iffffz933nnn/iv/i0FbWxsTExNX3e8v1vTmBfAK6b4Q3vzmN/Oxj32MO+6445of4aUgEAhw++238773vY+pqSl++7d/+yqHpefGmID89L5y5QpGo5H29vYDjvryIJZI8fH//n8TT8rhl6JUJ5fPU61UWdmKcHK0n0KxiEqlYmJmgUq1xrGhHs5Pz2E1GbGY9GyGdrCZ5cjteDKD1WzCatSzGQxjNhoY7u2gJor78rN/Pyubh7c1N5JI5cjmC/Ik1/gwqXSWaCqD025lbnVrv+zQ3+WnXpdd0QDOTM/v+9F2+32sbocZ7PJjMRk5Nz1HvlhG0KjpaGlkfmUTr9PGaF8nW+Eo86ubCBoNPo+T5U1Z+3vD+CCpVIpStU4smUKtVBLdnWY7MdxLPJXG63JQqVRZXt8ilcmiUCg4NtzL+elZetpbaGn0EgzHmFtZR6NW0dvRyszCCmajgVNjQ6TzBeZXNiiWSgz1dDI5u4TH20D30FEkZyuLKYm6BEdaHSRKEg0WLYF4nkabnvmdPA6jQKNFS7pQBaWCRL5KhyBvTMUAACAASURBVEvPbCiDy6jFZzewky2xHstzpMXGajSHw6Ahls6TKZTRqhX0uTT80c3tDHS0UK1WWVhYYHR09JfuE7wY1Ot1Ll++jNFo3I9KP8w+1WqVTCbD9PQ0Y2NjBya53HnnnYTDYR5//PFDJ73s4SDSfbFTaQeZ9+ziFdJ9PvzgBz/gpz/9KZ/73OcO/BFeLC5fvsy3v/1t/umf/olcLsc73vEO7r333kNd5HsXp9VqPfSq4KVgeWOb+//u20QSKYrFMg6bhZmFZdoa3SjVGlQqJWemZhkf7CGdyWLU69BrNeTyeXRaLWqVCoVShVbQUKtVKZUq1Ot10tkcKxtbGPU6PE4bq7sEd3JsiIuX5+nyN9Pc5CWayLC4tolSocDjcbEWkMsH1x8dplCuoRXU7MRTFCvV/ZHc02ODTM2vMtDlR6VSsr0TZyss12ZPHRngmalZvC47fW3N5AolLs4uIUmSvG23WXd8uBedoGFtK0QgHGWoq4XLS3LJo6O5EbNBh06nY307hM/j5MJuIOVQTweB7RCd/mYEtQqxXt/32j023M+FmXl8XjftLY2o1CqeOn+Jaq3G0eE+pmaXaGry0dk/jNHVwFPrOSQJXCYBs82O12ElU6xRlyQy5TrpYpWBJisgka/UWdrJ0+k2YtGpkYBkoYLTKBDNlgkmi4z77ZRqIloVBGIZUvkyaiW02vX819uHONrVdBXJZTIZZmdnGR4eftnqt4eBJEnMzs6i0WiuSYN4PpTLZSKRCJubmyiVSvr7+/dThPdwyy23cO+99/LNb36TH//4xy+qPLcnfVMoFLznPe/h3e9+NzabjVQqtX/OdrudVCrF7bffzp/92Z9xww037H/v/fffz7Fjx57v8M97Iv/LGd68FLyQSc5f/dVfHdi1fKlYXFzk2LFjfPSjH2Vzc5M777yTO+64Y98t/4WgVCoZGhpienoapVJ54Fz6y4Euv48/+N3b+eK3/wGjXke5XGGgq41yucJOLM52LMkNR4fIZvPYTHqWN0PUxDpup5XLy5t0+ZsJhncoFEsM93Ywt7RGTRTp6/SjUatQqVS4nQ4aXE4kJFKZLAPdHVyaW2JuZYPTR0coluRxYItBx+nxIeLJJBOX5zky0MPZ3dJCt7+Zut1KW3MDxXKZwS4/5y/L9eO+9hY0ahVOuxUFcPOJUR47d4lILEl/RysqpYKaCJlcnteePsr04irnZxboamlge3fceCMU4/rxIeKJJNvRBFZLM2en55DqddLZPGMDPWgFDcViiYHu9n0THavZSGerD61WQNCouenkER4/c5GtcASr2YS/uRGlRovR5eOm1/VwMZDhfCCLajvHydF+JMFIsQZb8RxqVZa1ZJVur5k2hw5R0nNhM4FOrWTQZ+VUu435cJadjCRHoBfLmAUVrQ49doOarXiaXKEsE69aSYvDwIdvH+V0j/fA395isTA4OMj09PShw1RfDigUCgYGBlhcXGRubm5fsfNcPHsIY0+yNjIygiiKzM/P09PTs19mqFarlMtl3va2t3HHHXe86H7Ik08+ic/nY2dnh9e+9rX09V09GPKrMr35T73SnZmZ4ZZbbtnXvm5tbdHU1MS5c+cO3XE9zHf83u/9Hn//939/6HptvV7n0qVLeDwefD7fy3IeB+En/36Wh374OOlcjvBOnAaXnYX1AB6bGa0gkMjk2AztcOrIAFeW1/F53VhNemo1EZNRT7FYol6X5VKRWJxcoYjX5eDMRbnm2t/ZxspGgEq1ht1qwaDXolAoaWpwY7damFlYIbQTZ7i3iyurG9TrEoJGzVBvF1pBIF8oYTToODstrziNBh0um41qTcTv86LTCjy2KyszG/XYzEYC4RgDnS20NHi4OLtENJHGqNdi0GqIJjOYDXpOjQ+yE08yu7yBQadFK6j2VQs3nxyjVC4TjadIZXOoFNL+tt84NkK+WESlVBJPpSkUioR25Cig64+Nki/XMFlsRDN5VFoTKyGZ3K870o/G4qEgqVkMZxjv8HJ+PUGr04xVkEsml0JFJBR0ekw02fWsxwoEkkXaXUacJjm1JF+uYtZpWAhl0KnqFMo1irU6Oo0Sv9PMPbf0cvPg4a6XvTDVwcHBa1aPv0rsxfAUCgUGBwdRKpWHkqxVq1UKhQJzc3N0dHTgdDqZmZnh85//PA899NAvfV57U2hf+cpXXikv/M/Ey1FeOAgTExP8wR/8Ad/5zncOjJY+CKIoMjU1RVNT0wv9sL8U6vU6X/rWP/DjJ85SF+vUJcgVS7gdNqbnljEaDfjcTrRaeeJtdSuIxWhgPRCkVKlwamyQZ3aHBeQOvky2p8eHubywjNfloL2liVy+QL5YQhRFVja3KZbKaAWBtuYmFtcDu6vFcXKlMhvbYSrVGnUUJNOyvOq6I4OEYwmavC4q1Rrzq1vki7LT2ImRPs7NLDDQ2YrHaWNlM0ggLBNhX1sT82vbWIx6xod6yOWLTC+sUKnWODHcu7+iPjU2AHWR5Y1toskMJ0f6OLNrKTnSKw9glIol5lbWGRvo4ZnJnysVnA47dVTMr20x0tfF2VnZAKe7s422rn5iFTVLkQztXiuZsohWo8bntKBQKFmI5MgUq9j1KtqdelDruLiZRK9RMdxsQ6NWsh4roNMoMWpkr1yPQUGqLCFJoNWo6Wqw8H/c0sd1XS8+IaVQKDA9PU1fX981TapfNdbW1tjZ2UGr1VIqlQ6lpKhWZdXF3Nwcra2t/Ou//ivZbJYPfehDh/7eQCDAO97xDkIheYDnrrvu4l3vehd9fX0UCgVUKvlN7atf/SrT09MkEgnsdjuf//znyWQyfP/738dms/G+972Pc+fOvdBXvUK6h8GvinRBTiq95557+N73vndoEt0Thbe0tOD1Hvy6+GJRr9dJJBJEIhEymQw2m43vPnKGhc0tRLFOaCeO0aCjUq5QrZRpbPBwZvIKapVKnpQKRTk23EcylUIjaGh0OthJJKnX6zhtFpbWA6SyWbpafUxekVeop8aH98n52Ig8zdbR6sPtsFEsV5meX6ZUrnB8dJDzu3XU3rZmlGoNDquFUDSBTqdlflW2ihwf7GZyboX+jlZsFhOlcpWLu1HsPa0NLG6GMRv0DHa3odNqeOriFao1kbH+LibnlkCCoW4/HqeNK0vrhGMJRns7mFlYpV6v4/O66G1vIRiJsrC2SX9nK8urG5QrVTxOGyN9XUQTaeZW1mnyuMlVROLpLF3d3fQNjbKeqbMezaHTqOhrdhPPV/C5rOTLIiKwEM5g0WkYbnGiVqt5YkkOrWyzC7S4bWynSoRSBbrdRhK5EkpJRKlSEc1VUauU6AQVfY1W/vjWQfqb7L/U9fBSJsheKvac8CKRCIVCAUEQqNVqjI+PH9oDd6+k8OlPf5rl5WXe+973cssttxz6HPbc/mw2G3fccQeLi4u0tLTQ2trKbbfdxjvf+U7uvPNONjc38fv9fPKTn+Suu+7i7Nmz/OEf/iEPPfQQfX19fP3rX3+hei68Qrr/MfDTn/6UD3zgAzz88MOHzm6r1WpMTk7i9/tfct5bvV4nHo8TiUTIZrM4HA68Xu9+SnG1WuWTX/gm82sBJFFCo1ayGYrQ6LLzzOQVxgd7KBTLOG0WMrkc4WiC9uZGnrowjaBR09naxNzyOmajAZvFxGYwjMmgx+OyUynLo7IOm4VcvkAsmabB7dy3Uhzs6WBhVR6WaPK46WxvplSpsrCyQae/mal5eeXodlhRKtV4nHJem6DR8MQFWZrmsBip7UYMDXT6sVtMPH5+mkq1Jk+sSRBLZehrb8bf5GFqdoVIPIndYkKv1bC9E6O5wcVQVztL6wFWNoMY9ToaXTaWNrZo8jgZ7GojGApzZWkNlVLJkcFeLs4u0T88QkvXIMmqirltuek33tlAMl/F67QS3Y1BOr8SRS+o6Pc5MOkFzq/GKVZFfHYDnV4z+bLIhY0EzRY1Jq2afLmGzSCQrkgkcpXd5F4lN/U38sevH8RuevmGZ8rlMlNTU3R2dr7sCw5RFPevvVwuh8vloqGhAdNuNFIoFGJ7e3t/EOIwqNVqpFIpbrjhBt7znvfwkY985CWf3x133ME999zDU0899XKY3Dwbr5DufxT8+Mc/5uMf/zgPP/zwoVcW1WqVyclJOjo6Dn1T7F3sOzs7ZLNZnE4nXq8Xi8VyYHOgWCrxwc98ha1QmFK5isVkYH0rhNdpI5/P43A6eOLcJQa62lhYWUehUHBytJ9wNI5ep8Wo15LNFxA0agqFEpFYXJ70SmXI5PLYrRZ0gkAoGpMbhr2dBHdi+H0NuB12lja2WQsE8XndZAolMnnZvHu0txO1IKBWqajWakwvbSCKdZQKBd2tTWxHk/x/7Z15fFRlmravU3tV9qqkqrInEEIIkIW9VVRUXFAEgZC0rTIuzTfMdLeMrf3TYb6ebntcu2XU9tPunhnlN7bdrZKiWdoGXGYcAWWRJBB2TAIJSSp7pSq11znfH0VqQFkSUkkAz/UXJjl13sJw13ue93nue8LYLGIMOnbtO4LH549MpdUcqWNcTjqZVjPHTpyi8XS3w/SJ49i9/wjplmTyczJo7+6m9mgDEPbr3fHlflKS4sjPzSLg97Gzqn/cuYDqA0coLJmKKSsfjSGOHUfCOWuWxBisxjj0ej2tDh96rZpOlxe3N0hBRhI6jZrGLjdNXX2YYrQUZiShEAQ+O9qKMUaLNVZFny+AQaPEH5To9oEnEEKlEEiJ11E2PYe/uT5/2IZn+kd3c3JyhhTmCt/8kDeZTFitVuLi4s65/ra2NhoaGs6bQnEmbrebLVu28P777/P5559z0003MW3aNH784x8Pep0NDQ1cf/311NbWsnr1atasWUN8fDzTpk3jpZdeIikpabB+C2cii+7lxLp16/jlL39JZWXlgHsL/X5/JNjvfGLd//jW1tZGX18fJpMJs9l8XqH9Ou2dPfzkV7/D4/Xi9flAEvAHAng9Hg7Vn2TqxHxCIRFjUjwt9g56nC7UCgX1Tc2My8nk5KlmfP4ApYX5VB04giRJlBTmU3eiiRRTEtnpVvyBIG6Pl55eJ16/n2Z7uP46vXhixKzm+hmlBEIifR4vdSebSYiPobk9vIssHj+G+uZ2xo/JQkKio6uXEy3habbvlEzg8+rDjM1MJdVsos/jpep0isP0Sfnsrj2KJTmJvKx0BGDb6Sm1wrFZHG9oJMWYSHaaFZ1Wxcfbw/l6ZlMiKgFSMseQmDEOlS6WL78Kd3MoBIFrJ2QSQMGpHi+9ngC5KbEca3VQkG6MWHfuPdFJnE5FYboRnVrF3oYOgiGRHKOWQDCEQatGUKpwByRaejwEQyE0SijNsfC3NxUwdUz0y13n4lJGd/v5etnKaDRitVoH/LvX2dnJ8ePHIykUZ+L1etm6dSuVlZUcOXKE22+/nYqKCkpKSpAkiaampkG3WLpcLm644QZWrVrFokWLomVycyay6F5u/OlPf+L1119n7dq1A27b8fl8VFVVMX78+P6Y52/UyfqNzM+3q7gYJ5tb+cmvfoffH6ClrZPsNAtfnTxFnEGHSqmgt89NXWMLs4oL+aL6AJmpZnRqNQgSqeZkOrt6EEWRVHMyh4/X093rDMeXn445n1EykV2nD6nycjJpOj0qm2FNQafTUnu0nrbObqZNLjid9wZmYwJqtZqsjFT63F4MBj0794UFekxmKq2dPViTk7Amm05PrIXFNNOaQm+fG7VSybicDGL0Oj7ZWYMkSSTGxRAXo8fvD5CblYZapWLb3v2IobDvw5SCMXiVBrSmTEIGI31uDy1dYU/e6yZkIEpwostDS4+b6WNSqD3ZSX56UjiMUq1kT107KqXAhHQjBq2Kxs4+TnW7GWPUIiCh1agRBQUGnZZjrQ58ARG1UsAUp+OGAisLC+Lw9fVSVFQ0rBFPX6d/dDc1NZW0tLQL/qwoinR3h/0bHA4HSUlJWK3WSNlqsHR3d/PBBx8wZcoUxowZwyeffEJlZSX79+9n7ty5VFRUMG3atCEHAAQCAe666y5uu+02HnvssW98fwgmN2cii+7lyJo1a3j77bd57733Bjwh5PV6qaqqwmKx4HQ6I4kR/Se/0Xj8PNrQyA//5f9hjDMQDIVobusgw2pm38FjaDQqYmMMJCfFo1QoaG3vIiEulr21h5EkMWwU8+W+sClNYR57a48gCGG/ghOnWjAbk8hMt+Lqc+N0uYmLNUR8C1JTTLg8XlxuL2qVkhklk5AkaO3oQq1ScPRkuNdaq1GTnZ5KSJQwJyehVir5bG9YyMM15nSa27uYkJuJRq1m5+nJOgjveL9qbCE/N5NASKSxpS1iNzl98jj60GEdV0yTT0dqjIKquvA9J1jjMcaqqetw09ztZow5DrfXT0q8HrVSiS8k0tHrodPlozA9Cb1GiS8oUnOyi8xELQYlKJRKFEoVMQYtLT1unJ4gQVFCoxLItybwwOw8bi7835avpqamSNLISApvKBSipqaGlJSUb/SKS5JEd3c3ra2tEaG1WCwkJiYO+XcvEAjwH//xH6xevRq9Xs/tt99OeXk511xzTVSSVvrXv2zZMoxGIy+//HLk63/4wx/4+c9/TigUoqCggNjY2EsxuTkTWXSjxRNPPMHGjRvRaDSMHTuWt95665LbbSRJ4o033mDTpk288847aLXa8/5sIBA4K5rH7/dTUFAQta6Gr3PgaD1/94vXSIjV4XKFJ9EUCgGPx4Neo2L/8QZi9HoUgkBbZzfXTZ1MfXM7cXo1aSlG2jp7wkY+Bh0nmlrwBwLEGfScONUatlLMzYzkixWNH8PBr06SlWYhO8NKT28fRxsaUSoUJCYm0ni6fFA8PhePP0SyMRGH04W92xnJHrumdCK1x08wYUwWoijR1t0baR2bMTmfQ3WNTBibjS8QDrysOV3DzUkzE5NoImXsJJr9ejKMMext7AVBIC1eQ55RxfFWB41dbmK0SrKNMYiSRIxOjd3hJUGv4sCpHgpSE4jTaVAqBHbXtWMyqEjSKwihJEavQalQ4g+JnOrqQ6FQEAiJGGO0zBybzMrbJmKMO/eH7qlTp2htbaWkpGREhVcURfbt20diYiLZ2dn09PRgt9vp7u4mISEBq9UameYaCsFgkM8++wybzcbOnTuZPXs2M2bM4JVXXuHNN99kypQpUXpHYbZt28bs2bOZPHlyRMh/8YtfcO+995KWloZGo+HEiRNs3LiRG264AQgPUb355puoVCpefvnlC5ncnIksutFi69at3HTTTahUqkh/4AsvvHDJrydJEqtXr2bbtm2sWbPmrBPcc03nmM1mYmNjcbvd1NTUDOtU0eHjDSz7p9UIgkCW2URjSwvZaVa27alhQm4GQQkspiQ6ux3UdQcIKHT42utJNKjRqlS0tneSlWals6cbV5+H7HQr3T0OdFotZmMiCgEEhRK314tep2ffkXA54ZqpRRHnr0njxxKjNyBKEscaGklNMXG4ITxeXDA2m44eJ2MyU/EHQ2jUanbXhl3HstMseHx+stKsSIBep2VHzekhC72WgnFjiTFn0R7UolKq6BZ1OH0hkvRqSjLjaepycrQ1XE6YnmOkw9GHmgCdXhiTEs/u+nZyUmJJidUhCHCouQdJFEmLUxFEQUKMHq8/hEGn4XibgwS9FqcvgCRKZCfH8vAN47h18sAmDvtP+EtKSqISLz4Q+ne0hw4dIhgMRroOkpKShrzrDIVC7Nixg8rKSrZv384111xDeXk5N954Y+T91dXV8de//pW///u/j8bbuSCff/45P/vZz9iyZQvwzY6FS0QW3eFg3bp1rF27lnfeeWdIryNJEs888wy1tbX8y7/8C1VVVaSmphIMBiNCe645+f6poqKiomGbo29obKHiJ8/j6PMQp9cRCvqxmhIJ+n14fEGONneiT0zB5/Oi1MaiEiTMqj6SE2IJBYMEgiES4mI4eaqFXlcfZmMiRxoaQZIoGJsTMRI3JSagUivDB0wZqZiSEvnqRBN1jc3hg7nTB2IGnZbMNDMGvZ6QKGHQ69l5ejRYq1GTl52JVnu62yEU4lB9C/5guLQwe1oRoi4BFzpaHR7MKSnUd/Rh0KqYnp+JNyRQdbKbkCgxOT2BXrcXc7yOU91ukuO0HG/tQSNI5JrjkQQFbQ43bb1eshPVCAolcQYdTm+QpFgtTV1u1EoFINHTFyBWp2Lm2BR+fMdEkuMHl/4B0NraSmNjIyUlJQNurRoskiTR29tLa2srXV1dxMfHYzabsdvtaLXac4ZHDhRRFNm5cyc2m41PP/2UadOmUVFRwc033zxs72egrF27ls2bN/Pv//7vALz99tvs3LmT1157bSgv++32Xhgu3nzzTcrLy4f8Oh0dHZjNZnbt2sVtt93GAw88wJw5cy4azRMTE8PkyZPZt28fxcXFg47yGQg5mam8/6+r+N4TL9Da1YugUHL4VBfeIICEKiZszqJQa9EqQvhEJS0+LfX7j1JSkMv+I2GxLJ0wlhPNdrp7XVwzpYjqg0fw+wPMuWYaTpcbn9+PKEoc+qqeL/cfwqDXkWpORpIkag4d45ZrpuP2+mjr6MLR66Kto4ceV7it7LppRfT5AqhVSprtnQhqdSTOfWZRAYIunqBSx97GdkonpHL0RBcqpQJjrI7sDCu7TzjYVu8gPVFPjklPkkFDj9sPApzq7sPhDmBN0DHWEs6323uyh4x4JQl6LSnp4aGHOIMWjz9Iu8tPrE6NKEl09/nISY7j+3PGs2R67pAexa1WKwqFgqqqKkpLS6MmVJIk4XQ6aW1tpbOzk7i4OCwWC+PGjYvsaJOTkzl8+DBHjhw5Z3jk+RBFkb1791JZWcknn3xCcXEx5eXlrF69+oKltKsdead7Di5kkLNgwYLIn/fs2YPNZhvSPyZJkigvL2fmzJncc889vPrqq/h8Pn75y18O+DHO6XRy4MCBYbXs63I4qXjsWepb21Gq1ASDIt6QhFqtJhAKIQlKFAolYiiEQq1FLfowqXzkplvo7HaE48xNSRyrb8ThdJGXncbe09Nn3ymdzOenR4hnFE+k+tARxmZlYEk24QsE2H/4OC63hxnFk9i9Pzy6WzQhj1AwPKlV39RKYf7YiBlOdpqV1DQroqDmYP0pisbnUtXoRAIm5OWSO2Ys1XYvPe5wX2yuyYBCACSRU91uzHFaDrc4KExLRK0If72qsQejTkFaghYUShx9HnRaHfEGLYebe5iUkYjDE6DN4UGjUlKabeLv505gnHVwdoMXo729nfr6+gH1tJ4PSZJwuVwRoe23HTWZTOetG0uSxLFjxwgGg+c1q4H/rQXbbDY+/PBDCgoKKC8vZ968eVFPQ4kWcnnhCmDNmjX89re/5eOPP4767lIURf7u7/4Og8HA008/PWDhdTgcHDp0iJKSkmH75Q4EAnz3Jy+w/9hJ/KKERqXGEwgiCUpAAqUatUJAoRDwCVpEn5tQZyOTx2VTc+jYacvHJOoawxNfaWYTbq+XFFMSxoR43B4vXT29pBiT2L6nGgiL5FcnwyWI8WOyyEi1YO/o4vBXJygqyKP6SDi+Oy5Gz7TJE3F5vBw63oDZlIQTLT0uDzk5OUwqmcZxp5JmR9jdbHquEYfbR5xWyXG7kzxzLHsaOsk2xZASp0UKBalp7EEhwBiTDrVajYiCtl4P2clxNHW6UBPEnBhDjzdEl8uHKUbL7cVpfP/GCWjVw3fo1d/TWlJSMqgdY7/QdnR0YDAYIv7OAz2gO5dZTf/XDx48yNq1a9myZQt5eXmUlZUxf/78YXn6ijbBYJD8/Hw+/vhj0tPTmT59On/4wx+YOHHiUF5WFt1osXnzZh577DE+/fTTAYfuDZZQKMSDDz5IVlYWTz311IB30j09PRw+fJjS0tJhe3yTJIlHn/8Nmz/7EkGhREIgIIpotFq8vgCiUgsCSBIIai0qMYBV48OSFE+Xoxe1UknodBtajF6H2+Omy+EkIS6W+FgDjc12BEFg6uQCehxOko3hsd/q2sN09vSSGB9LQnw8J5pbMSbEMa1oIo2nTkUyy/LGhDsh0jOzKJp5Hb3qZA7a+wAoyUqi2x3AEqelsdNFWpKBmpNdxOs0jDHHIIaCHGl14PJJ5Bi1GGN1CAol+xu7KExPIhAS6XX7yU2JxRcIUd/uxB/wk2eO5//cPIHrJwyfI9zX6erq4ujRoxf9kHW5XJHEEr1eH8ngG0onRHV1NS+++CJPPvkkmzZt4oMPPiAzM5OlS5dy9913ExcXd8mvPVp88MEHrFy5klAoxEMPPTSk0eLTyKIbLfLy8vD5fJhMJgBmzZrFb37zm6jfJxgMcu+991JcXMzKlSsHLLxdXV0cO3aM0tLSS378PN962tvbaWtrw+Px8PGXh/njRzvp84podRq8gSCSoEKSRARV+L4qpRK/pEDyujAq/fg9LrocTibk5fBVw0n8gSAlhePocfSSEB+PMTGeYCBIW1c3re1dWE2JHK4Lm4xfM3UyX1TVkp+TRaolhT63hz37DyOKYthQZ+8+UtPTmVAyHY0xg52NYaHNNMWi1ekxxmrpcvlQKQXaen24/UEmpCWglEI0dXmw9wUwGZTkJseiVavZWddOujEGc5yOdqeXjCQDCqCxy4UnEARJ4PoCC//nhjyavjo8IoYxX6e7u5sjR458Q3jPjIbSarURoR1q50P/TreyspItW7bQ0NDA008/TVlZ2Yi7lF0ByKJ7JeL3+ykrK+PGG29k+fLlAxbejo4O6urqhnzg8nWhPdPnVBAE9h46xqPP/Q57jwulSk2f149CpQFJRFKqCQWDCIIE2jgESSTLEMTX14vP5ycnI5W9tYfxB4JMn1wQrtVK0mlBDueLpVvMpFpMaNQa3D4f8TF6PtsVLjtkp1tx9rkxmy2kpGWij0tke0N4yEGvUTEpfywqrYE+f/jRP0avpb7DxXhrArFqgV6Pj2MdXrRKKEyLX448awAAGxZJREFUJ06vZXd9JyqlgvGp8bh9QeL04b87tzdAp9OHOxAgLSmG8hk5lM8aG/n/0W8Yc6ER7eGi/+kmPz8fh8NBW1sbGo0mIrRDPXCTJIkTJ05gs9nYuHEjiYmJlJWVsWjRImw2G++//z4bNmz4Vh+MnQdZdK9UvF4vCxcuZMGCBSxbtmzA17W3t9PQ0EBpaemgdjhnGkoPxOfU4/Xx4P/9V6qPNqJQKRFFCREBt9ePLiYOXwji9WqcAUCSyIxT0HryOEhQWjiOYw2NGPR6xmSm4nS5USoVaNRqvmpsobGlDWuyETEUwt7ZhSAIXDetiICkAJUWtz9IuzNAl8sDwPXTinCEVIRUOhq7fUzOMfPliW7GmONI0qsJBQPUtHgQkMi3xGFJNHC4pZd2p4fCtER0aiUqpQK3P4heraS+3YkgSYjAlJxkfnjLBPLTzr2j6xfevLy8yFPQcOPxeLDb7TQ3N+P1esnNzSUjIyMqQtvc3ExlZSUbNmxAr9ezZMkSlixZ8o2S2u7du5k2bdqwGfFcwciieyXjdru58847uf/++6moqBjwdXa7ncbGRkpLSy9Yw/u6c/+ZY8UD5T9sW3jt3c14AyGc3iB6vQ5fUESv1eIOiKgFkZAQFuXEWB1t9YdBDJ6VYfad0omRqPQZRRM4cKyBrHQrqZYUAqJE3al2Wjt7mDF5PLsO1qFQCMwonkRMUjJ2N9S19VCSm8rBVheWeD2WpFhCoSAH7R6CkkBWkp5sczxtTh9HWnpJTzKQaYxBADr7fCTo1dgdHoJiOJXBkqBjXnEWD98wHrXq4gea/aZEwym8Xq8Xu91OW1sbSqUSs9mM2WzG5/NRW1t7yT3bkiRht9ux2WysX78ehULBkiVLKCsrw2KxyKI6eGTRvdJxOp3MmzePFStWsHDhwgFf19LSQnNz8zfGSKMhtF+nrcvBT1a/xZ7D9bj9ImqVkr6AREKMlkBQQlKoUKg1eEOgEsCsDWLSQnycHrfXj0JQEGPQ0dLRQ3u3g9x0Kzv3h9vAslJT8AZCxMbFYTWnEJeQRPWJLnr6vKQkxGA0GVFpdMToNLg8fro8Qbq8EmmJesZYEgmKsLOug0SDhnxrAgqFQFefD61KiSBAS7cbUZLQKAUmZRhZPmc8RdmDd/fqt0gcjA3nxfB6vbS1tWG321EoFJjNZiwWyzdq9i6Xi/379w9qSrGtrY3169fz5z//mUAgwOLFiykrKyM9PV0W2qEhi+7VQHd3N/PmzeOJJ57g9ttvH/B1p06doq2tjcLCwojPaf9Y8dezqKLBX/5nD8+8ZaPb5SUQFAmiRKfV4A9BUAKFFEQU1Bj0WtxePyFHG1Pz0th1um93VnEBxxtbMZuMZKaa6QuION1+3P4AkqDmZHs4rfXGqYV40eAXobHThTVBz7HOAJmmWFJNcfi8HmrtXvQaFflpiaiVCrwBEbcvQGKMlrq2XlQKBSFRIj0phjtLMrn/unEolUMbc+0X3tzc3EvucPH5fBGhBbBYLJjN5ovWTvunFCdNmnTeLoLOzk42bNjAunXr6Ovr45577mHp0qVkZ2df1kLb09PDI488Qm1tLYIg8Oabbw7E7Wu0kEV3pNm8eTOPPvoooVCIRx55hCeffDIqr9ve3s68efP42c9+xpw5cy768/3+DQ0NDfh8PrKysrBarcMevy2KIi+/s4l3P/yCTqcHpVKJVxQQgwG0Wh0hpQq1QoFfCO/WDIogaUkG2lpbcDj7mDYxjy9qw9Nsxfk5tHS7SDEmYTImotPHcKCpm/ZeN5lGAyGlFlNiHAa9HgmB1l4/7kCQsZYE+vrc6LRa+gKQEKvlZLsTUYKQKJIcr+OaPCuPzCnAmhjdftJ+4/nBCK/f748IrSiKEaEdbN91vy9HXl5e5N49PT1s3LgRm81GT08Pd999N+Xl5YwdO/ayFtozWbZsGbNnz+aRRx7B7/fjdrsv564JWXRHklAoRH5+Ph9++CEZGRlMnz6dP/7xjxQWFkbl9VtaWrjzzjt54YUXuPbaa7/x/XMZ5VgsFjo6OnA4HEyaNClqVnkXQxRFXvnDX/jTh1/Q5fSi1GgJiBIatRp3ELQqgRi9FocfJBQoBUg2KIjVqkmO1eDyBWntcmLQaggpVDR1OkmK1ZGXnoKgicHhC9HmcFOYaabLE8AUH4PD7SdWr8EfEgmEJJo7nQRFUKtVpMTpmJJr5nvXjqMwY2j5YhejX3gvlMYQCAQiQhsKhSI12qFOFvb19TF37lzmz5/P3r17sdvtzJ8/n/Ly8kGN8l4uOBwOSkpKqKuru1LWLovuSDJMY4Vn0djYyPz583n11VeZNm0afr8/Yv14odJBfX09fX19TJw4cUR/eSVJ4rXfr2PTzsPYHR4kFAQkUKrV9PklJMICLEoQUuoQT//OmmJUgIACCQUCxsRYjrQ4UKkUFGZZ0Wg09HqDnOp2E6NVYdDrcfuCuANBQiLEaDWkJenJSVCweHoO15VMGLH3DP+bxnBmxl3/h2JrayvBYDBSo43GCHdfXx+bN2+msrKSlpYWGhsbef7557n//vuvFLE6J9XV1SxfvpzCwkJqamqYOnUqr7zyyrA/sQ0BWXRHkmFyLfoGVVVVLFq0iJSUFMaPH8+TTz55XkeyM/nqq6/w+XwXnKEfDiRJ4tChQ/hDIp/UNvJFbT2NnQ5cniASCkSFkiBhr1mNUkClUhFCAQolWrUKT1AgJIFGpUASFARFiNWpCUgCGqUCQaHAoFWTFKsjwxjLXVNzubUoC7VKiSiK1NTUkJyc/A1j7uGmf8cbHx8f8ULuF9pojMl6PB62bNlCZWUlx48f54477qCiooKioiJaW1u5++67sdlsZGVlReHdjA579uxh1qxZbN++nZkzZ/Loo48SHx/PL37xi9Fe2vmQXcauJjweD0uWLKGzs5OFCxeyfft2Vq5cSW5u7oCuHzNmDMePHx+0a9RQEQSBCRMmcPDgQRbMyOex74bNoPceOYntf77k8IlWWrqc+EIqgoISQRHe3yoUSvwSaBSg1aoIhCQ0aiXxBj3xMTqykuMYYzVyXUEa0/LOne2lUCgoLi6mpiYcGzQSwntmh4goirS3t5OVlTXoPK9z4fV6+eijj7DZbBw8eJBbb72Vp556iilTppxVOkpLS+PTTz+9nHeEAyIjI4OMjAxmzpwJwJIlS3j++edHeVWXhiy6w0B6ejqNjY2R/25qaiI9PXpz+Xq9ntdffz3yj3ffvn3cd999vPPOO4wdO/ai1wuCQF5eHkeOHOHYsWOMGzduRIW3sLCQ2tpaDh06hEqlwtfVwdKZY7EuuPYbTlc9Lg/NXb0gKNCrVSTEaEmK1V/SekdCePsz61pbWyNTfHl5ecTGxhIMBqmurkar1Q46+BHCB23/9V//RWVlJdXV1dx888386Ec/YtasWRes0V/pggtha8vMzMzIRuHjjz+O2hnJSCOXF4aBYXItuiB79uzh4Ycf5t133x3wY2T/475GoyEvL2/Y1nbm/c40YAkEAiQlJVFYWDjiUTTRLDWcKxz0fJl1/cGPaWlppKamXvS1A4EAn332GZWVlezevZsbbriBpUuXct11143o39nlQHV1daRzYcyYMbz11luRgNbLELmmeyns3r2bhx9+mF27dhEKhZgxYwbvvvsukyZNuui1w+BadFG2b9/OD37wA9auXTugf9AQFsIDBw5gMBgYM2ZM1Nd0ptB+3VJQEARqa2tJSEiIyiP3YOgX3pSUFDIyMi7p+n6hdblcEaEdSApzKBSiurr6vIm7wWAwEmezY8cOrrvuOsrLy7n++utHLK5nKIRCIaZNm0Z6ejqbNm0a7eWMFrLoXir/9E//hNfrxePxkJGREdUOhOHgk08+4fHHH8dms523TenrSJLE/v37iY+PJycnZ8hr+LrQ6vV6rFbrOb1bRVFk//79JCUljfhBTygUYt++fQMWXlEUI8MlTqcTk8mExWIhPj5+0OWOfuENBoPMnDmTUCjEF198gc1m47PPPmPGjBlUVFQwZ86cUY+zGSyrV69mz5499Pb2yqJ7rm/Ionth/H4/06dPR6fTsWPHjivike6vf/0r//zP/4zNZhuw61U0xO9c3q3JyckX3Z31pw2YTKYR7yy4mPCKokhXVxd2u53e3l6MRiMWi4WEhIQh18H9fj+33norFouF+vp6SktLqaioYO7cuVG15RxJmpqaWLZsGatWrWL16tWy6J6Dy/9ZZZTp7OzE5XIRCATwer1XxKHEHXfcgdfrZenSpVRWVpKQcPHIGIVCweTJk6mpqUGhUAz4kftcQpudnT2ox2CFQkFRURE1NTUIgnBJj/uXilKppKioiH37wnFBGRkZiKJId3c3drsdh8NBUlIS6enpFBYWDlloRVGkuroam83GRx99xMSJEzl69CgrVqwYkeTb4WblypW8+OKLOJ3O0V7KZYu8070Id999NxUVFdTX19PS0hL1Xtvh5I9//CNvvPEGa9euHbABSigUoqamBqvVes56I5wttDqdLmom2f33tlgsUe32GAjBYJAvv/wShUJBMBgkMTERi8VCUlJSVIT2wIEDrF27lq1bt5Kfn8/SpUu58847MRgMeL1evvvd7/Lyyy+PeG07mvSnSLz++uv893//N7/61a/kne65viGL7vn5z//8T9avX09lZSWhUIhrrrmG5557jptuumm0lzZg3nrrLX7/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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BY-qwyrf2zHd",
        "outputId": "d182d8fd-4aea-46c2-c9a0-d8e58b8c2590"
      },
      "source": [
        "x = torch.tensor([4., 0.], requires_grad=True) #初始化非常重要\r\n",
        "optimizer = torch.optim.Adam([x], lr=1e-3)\r\n",
        "for step in range(20000):\r\n",
        "  pred = himmelblau(x)\r\n",
        "  optimizer.zero_grad()\r\n",
        "  pred.backward()\r\n",
        "  optimizer.step()\r\n",
        "\r\n",
        "  if step % 2000 == 0:\r\n",
        "    print('step {}: x = {}, f(x) = {}'.format(step, x.tolist(), pred.item()))"
      ],
      "execution_count": 53,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "step 0: x = [3.999000072479248, -0.0009999999310821295], f(x) = 34.0\n",
            "step 2000: x = [3.5741987228393555, -1.7641836404800415], f(x) = 0.09904662519693375\n",
            "step 4000: x = [3.5844225883483887, -1.8481197357177734], f(x) = 2.1100277081131935e-09\n",
            "step 6000: x = [3.5844264030456543, -1.8481241464614868], f(x) = 2.41016095969826e-10\n",
            "step 8000: x = [3.58442759513855, -1.848125696182251], f(x) = 2.9103830456733704e-11\n",
            "step 10000: x = [3.584428310394287, -1.8481262922286987], f(x) = 9.094947017729282e-13\n",
            "step 12000: x = [3.584428310394287, -1.8481265306472778], f(x) = 0.0\n",
            "step 14000: x = [3.584428310394287, -1.8481265306472778], f(x) = 0.0\n",
            "step 16000: x = [3.584428310394287, -1.8481265306472778], f(x) = 0.0\n",
            "step 18000: x = [3.584428310394287, -1.8481265306472778], f(x) = 0.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "63I9ccXD6qkV"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}